1

字段的顺序在 lucene 查询中是否重要?

例如,

q = A && B && C

假设 A 出现在一百万个文档中,B 在 10000 个中,C 在 1000 个中。

虽然无论您 AND A、B 和 C 的顺序如何,结果都是相同的,但以下查询的响应时间会有所不同吗?

C&&B&&A

A && B && C

Lucene/Solr 是否为给定查询在空间和时间方面选择最佳查询执行计划?

4

2 回答 2

0

不管查询是A AND B AND C还是C AND B AND A,查询执行时间都是一样的。
此外,如果您执行 AND ,则需要存在所有查询词才能返回文档,因此文档频率将是相同的。
但是,术语频率会有所不同,因此得分也会有所不同。

于 2013-08-30T18:30:36.107 回答
0

Lucene 的定义是“一个高性能的全功能文本搜索引擎库 [...]”。分析每个术语出现的文档数量很容易决定执行 AND 操作和 Lucene 的顺序,当然可以。

如果您对该算法感兴趣,则可以在具有最低基数的项之间执行 AND 以获得最佳性能,并一直持续到具有最高基数的项。

通过这种方式,由于对排序后的列表 [O(n+m) 和两个发布列表的 n 和 m 长度] 上的合并算法和跳过指针,您可以迭代更少数量的 docID。

于 2013-09-05T22:48:10.010 回答