検索API 検索が正しくできないワード

Windows Server 2016
FESS 14.2.0
ElasticSearch 8.2.2
で環境構築しています。

javaのプログラムから検索APIで検索しようとした場合、
検索ワードに「for」「this」「is」等を指定すると検索結果がゼロ件になってしまいます。

APIで呼んでいるURL
http://(ホスト名)/json?type=search&q=for

返ってくるjson形式の文字列↓
{“response”:{“version”:“14.2”
,“status”:0
,“q”:“for”
,“query_id”:“e57414c5e59f4b2cb2261c9d7c22cee2”
,“exec_time”:0.06
,“query_time”:0
,“page_size”:10
,“page_number”:1
,“record_count”:0
,“record_count_relation”:“EQUAL_TO”
,“page_count”:1
,“highlight_params”:“&hq=for”
,“next_page”:false
,“prev_page”:false
,“start_record_number”:0
,“end_record_number”:0
,“page_numbers”:[“1”]
,“partial”:false
,“search_query”:“for”
,“requested_time”:1670485018831
,“related_query”:[]
,“related_contents”:[]
,“result”:[]
}
}

curl コマンドでAPI URLを打った場合も recourd_count : 0 となったのですが、
ブラウザのアドレスバーでURLを入力してアクセスしたら、検索ヒットして文字列が正しく返ってきました。

ブラウザからの入力とは違ってcurlやプログラムからは何か文字列変換等が必要でしょうか。

それとも、FESS や ElasticSearch の方で設定方法がおかしい可能性ありますでしょうか。

何か気付くことがあれば教えていただきたいです。

(ブラウザでアクセスした時と、java・curl でアクセスした場合とで
record_count_relation
の値が違っていますが、これが何か関係していたりするでしょうか??)

以上 よろしくお願いいたします。

ブラウザで検索するときには、ブラウザの言語情報を渡した状態で検索が行われています。APIでも同じ検索状態にするためには、langリクエストパラメーターで指定する必要があります。
標準では、検索結果が1万件以上の場合は正しい件数を返さないので、その状態をrecord_count_relationで表しています。

ご回答ありがとうございます。
パラメータ「lang=en」を追加したら、APIでも検索ヒットしてくるようになりました。

これに関連して追加質問させていただけますでしょうか。
通常は「content_description」に検索ワードが強調表示されるはずと思うのですが、「for」「this」等で検索した場合は検索結果にうまく出てくれません。

これは、APIの結果でも画面で検索した場合でも同じでした。
(↓デモサイトも同様)

予約語(でしょうか?)のワードを検索した場合にも検索結果を通常通り見せる方法はありますでしょうか。

ご確認いただけますと幸いです。
以上 よろしくお願いいたします。

システム > 辞書 の en/stopwords.txt (英語 の場合) から、for を削除してから再クロールすると、for でも検索できるようになります。

zolgear 様
ありがとうございます。
en/stopwords.txt 確認したところ確かにこれらの単語があることが確認できました。

ありがとうございました。
これで試してみたいと思います。