値を含むインデックスがありabc、defアナライザーの既定のフィールドにあり、2 つの異なるドキュメントに属しています。クエリを実行するabc OR defと、インデックス内の両方のドキュメントにヒットします。しかし、使用するabc OR d?fと、 を含むドキュメントに対してのみヒットしますabc。でインデックスをクエリすると、d?fを含むドキュメントがヒットしますdef。
解析されたクエリabc OR d?fを見ると、正しい結果が表示されます。つまり、2 番目の句として aBooleanQueryを持つ a が解析されます。WildcardQuery
私は何か間違ったことをしていますか?
私のアプリケーションでは、上記で指定したものの上に別のブール句もあります。これは、上で指定されたものとは異なるフィールドに一致します。したがって、私の場合の完全なクエリは次のようになりますuser:john AND (abc OR d?f)。しかし、インデックス内のすべてのドキュメントにはフィールドが含まjohnれていuserます。だから、それは問題ではありません。
ルセン 3.0.3 を使用しています。
編集: luke
を使用してインデックスを確認しました。そこで、書き直されたクエリで、用語が に置き換えられていることがわかりました。クエリが一致するのは明らかであることを知っている. しかし、クエリを書き直すときにワイルドカード用語が置き換えられるのはなぜでしょうか?d?f()abc