【问题标题】:Order of fields in a lucene querylucene 查询中的字段顺序
【发布时间】:2013-08-30 15:12:31
【问题描述】:

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

例如,

q = A && B && C

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

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

C && B && A

A && B && C

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

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 2013-03-21
        • 2012-08-06
        • 2019-09-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-24
        相关资源
        最近更新 更多