3

値を含むインデックスがありabcdefアナライザーの既定のフィールドにあり、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

4

1 に答える 1

0

これは私のせいでした。テスト シナリオで使用されたデータは、もう少し複雑です。そのため、この用語abcはインデックスに複数回表示されていました。しかし、インデックスから上位 10 のドキュメントのみを取得しました。クエリはabc以前d?fに最高スコアと一致したため、それらの結果が最初でした。したがって、を含むドキュメントdefはクエリで見つかりませんでした。

于 2012-11-22T07:14:49.677 に答える