Lucene:TermQuery与SpanTermQuery

时间:2012-11-15 01:23:07

标签: lucene lucene.net

TermQuery和SpanTermQuery之间似乎没有任何功能差异。搜索性能还有其他差异吗?即使差异很小,我也想知道。

如果有所不同,我正在使用Lucene.Net 2.9.4g。

3 个答案:

答案 0 :(得分:3)

我发现当搜索服务器处于负载状态时,两种查询类型之间存在明显的性能差异 TermQuery更快。

我使用50个并发用户对数百万个文档的数据库进行了负载测试,获得了以下平均搜索时间。

  • 使用SpanTermQuery:5秒
  • 使用TermQuery:3秒

(还有其他因素使我的平均值高于正常水平,例如大型文档,复杂查询和不太理想的服务器。但是使用TermQuery与SpanTermQuery的影响很明显。)

答案 1 :(得分:0)

如果您不需要Spans搜索API中的功能,则没有功能差异。例如,如果您要使用SpanTermQuery / SpanNearQuery / SpanOrQuery等,但是如果您不使用Spans API,则需要使用SpanNotQuery for子句你不需要它。

使用Payloads时,Spans也非常方便。

两个班级的表现都应该相同。

答案 2 :(得分:0)

即使不需要位置信息,SpanTermQuery也需要额外的IO。因此,如果TermQuery可以工作,请不要使用SpanTermQuery。