2017-10-23 10 views
0

BooleanQueryに少なくとも1つの一致するドキュメントがあるかどうかを調べる必要があります。私は一致する文書の総数には関心がありません - 少なくとも1つの一致があることだけ。現在、IndexSearcher.Search(...)n = 1と使用していますが、より効率的な方法があるかどうかを知りたいと思います。Luceneクエリに少なくとも1つの結果が効率的に存在するかどうかを調べるにはどうすればよいですか?

n = 1を設定すると、TotalHitsは正しい値に設定されます(つまり、1よりも高くなる可能性があります)。Luceneが必要としない余分な作業をしていると思われます。

これを行うには良い方法がありますか?

P.S.私はLucene .NET 3.0.3を使用しています。

答えて

1

Luceneは各文書を検索してヒット数を決定しません。一致する文書を参照する索引を検索します。書籍のインデックスを考えてみて:

Cats . . . . . 5, 8, 9, 10 
Dogs . . . . . 5, 6, 11, 12 
Horses . . . . 5, 8, 12, 13, 14 

私は「猫や馬」を探していた場合は、「本当に対「1以上のヒットを」私に教えて必要な作業量に大きな差がありません2ヒット "。


"should"句で構成されたブール値のクエリを短絡する限り、私はこれを行うクエリクラスを認識していません。 field:simpleterm field:*slowwildcardquery*のようなクエリがあり、単純な用語クエリに一致するものがある場合は、大きなスローワイルドカードクエリを評価したくない場合は、それらを別々の検索として実行するだけです。最初のヒットがヒットしなかった場合は、2番目のヒットを実行します。

+0

ご清聴ありがとうございます!私は当時の私の元の質問に固執する:) – HelloWorld

関連する問題