TermQuery 和 SpanTermQuery 之间似乎没有任何功能差异。是否有任何其他差异,例如搜索性能?我想知道即使差异很小。
如果有区别,我正在使用 Lucene.Net 2.9.4g。
TermQuery 和 SpanTermQuery 之间似乎没有任何功能差异。是否有任何其他差异,例如搜索性能?我想知道即使差异很小。
如果有区别,我正在使用 Lucene.Net 2.9.4g。
我发现当搜索服务器处于负载状态时,两种查询类型之间存在明显的性能差异。TermQuery 更快。
我使用 50 个并发用户对包含数百万个文档的数据库进行负载测试,得到以下平均搜索时间。
(还有其他因素使我的平均值高于正常值,例如大型文档、复杂的查询和不太理想的服务器。但是,使用 TermQuery 与 SpanTermQuery 的影响是显而易见的。)
如果您不需要 Spans 搜索 API 中的功能,则没有功能差异。例如,SpanTermQuery
如果要使用SpanNearQuery
/ SpanOrQuery
/SpanNotQuery
等,则需要使用 for 子句,但如果不使用 Spans API,则不需要它。
当您使用有效负载时,跨度也非常方便。
两个类的性能应该相同。
SpanTermQuery 即使不需要位置信息也需要额外的 IO。因此,如果 TermQuery 可以工作,请不要使用 SpanTermQuery。