lucene查询中字段的顺序是否重要?
例如,
q = A&& B&& ç
让我们说A出现在一百万份文件中,B在10000,C在1000。
虽然结果是相同的,无论您的AND顺序如何 A,B和C,以下查询的响应时间会有什么不同吗?
C&& B&&甲A&& B&& ç
Lucene / Solr是否根据给定查询的空间和时间选择了最佳查询执行计划?
答案 0 :(得分:0)
如果查询为A AND B AND C
或C AND B AND A
无关紧要,查询执行时间将相同。
此外,如果您执行AND,则需要为要返回的文档提供所有查询字词,因此文档频率将相同。
但是,术语频率会有所不同,因而得分。
答案 1 :(得分:0)
根据定义,Lucene是“一个高性能的全功能文本搜索引擎库[...]”。 分析每个术语出现的文档数量很容易决定执行AND操作和Lucene的顺序,当然也可以。
如果您对算法感兴趣,可以获得在最低基数的术语之间执行AND的最佳性能,并持续到最高的那个。
通过这种方式,由于排序发布列表上的合并算法[O(n + m),两个发布列表的n和m长度]和跳过指针,您可以迭代一个较小数量的docIDs。