簡體   English   中英

如何找出Lucene查詢是否至少有效地獲得了一個結果?

[英]How to find out if a Lucene query has at least one result efficiently?

我需要確定BooleanQuery是否至少有一個匹配的文檔。 我不在乎匹配文檔的總數-只是至少有一個匹配項。 目前,我正在使用n = 1 IndexSearcher.Search(...) ,但我想知道是否有更有效的方法。

如果我將n = 1設置n = 1 ,則TotalHits仍將設置為正確的值(即,它可能大於1),因此我懷疑Lucene會執行我不需要的其他工作。

有更好的方法嗎?

PS我正在使用Lucene .NET 3.0.3。

Lucene不會搜索每個文檔來確定命中數。 它搜索索引,該索引返回匹配的文檔。 考慮一本書的索引:

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

如果我要搜索“貓和馬”,那么告訴我“ 1個或更多匹配”與“ 2個匹配”所需的工作量實際上並沒有顯着差異。


至於在充滿“應該”子句的布爾查詢中發生短路,我不知道有執行此操作的任何查詢類。 如果您有一個類似於field:simpleterm field:*slowwildcardquery*的查詢,並且如果簡單術語查詢中沒有匹配項,並且不想評估大型的慢通配符查詢,則應將它們作為單獨的搜索運行。 如果第一個未返回任何匹配,請運行第二個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM