1

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

如果有区别,我正在使用 Lucene.Net 2.9.4g。

4

3 回答 3

3

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

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

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

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

于 2012-11-16T21:35:48.173 回答
0

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

当您使用有效负载时,跨度也非常方便。

两个类的性能应该相同。

于 2012-11-15T03:31:43.427 回答
0

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

于 2013-01-17T15:44:49.057 回答