如何有效地确定 Lucene 查询是否至少有一个结果



我需要找出我的布尔查询是否至少有一个匹配的文档。我不关心匹配文档的总数 - 只关心至少有一个匹配项。目前我正在使用IndexSearcher.Search(...)n = 1,但我想知道是否有更有效的方法。

如果我设置n = 1TotalHits仍将设置为正确的值(即它可能高于 1),所以我怀疑 Lucene 做了我不需要的额外工作。

有没有更好的方法

附言我正在使用Lucene .NET 3.0.3。

Lucene不会搜索每个文档来确定点击次数。它搜索索引,索引引用匹配的文档。想想一本书的索引:

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

如果我正在搜索"猫和马",告诉我"1 次或多次点击"与"2 次点击"所需的工作量并没有显着差异。


就充满"should"子句的布尔查询中的短路而言,我不知道有任何查询类可以做到这一点。如果您有像 field:simpleterm field:*slowwildcardquery* 这样的查询,并且不想在简单术语查询上存在匹配项时评估大慢通配符查询,则应将它们作为单独的搜索运行。如果第一个未返回任何命中,则运行第二个。

最新更新