【问题标题】:How can to group lucene's results?如何对 lucene 的结果进行分组?
【发布时间】:2010-10-09 16:19:35
【问题描述】:

我的应用程序索引讨论线程。讨论中的每个条目都被索引为一个单独的 Lucene 文档,该文档具有一个 common_id 字段,可用于将搜索命中分组到一个讨论中。

当前执行搜索时,如果一个线程有 3 个条目,则返回 3 个单独的命中。尽管这是正确的,但从用户的角度来看,相同的条目多次出现在搜索中。

有没有办法告诉 lucene 在返回它们之前按 common_id 字段对搜索结果进行分组?

【问题讨论】:

    标签: java .net lucene lucene.net zend-search-lucene


    【解决方案1】:

    我相信您要的是Field Collapsing,这是 Solr 的一个功能(我也相信 Elasticsearch)。

    如果你想自己动手,一种可能的方法是:

    1. 为每个属于 系列。您必须确保每增加一次 新系列。
    2. 对 Lucene 进行初始查询,并获取命中列表。
    3. 对于每个命中,检查它是否有一个系列 ID;如果是,请按系列 ID 进行另一个查询,以检索所有 该系列的成员。

    另一种方法是将所有系列成员的 ID 存储在每个成员文档内的字段中。

    【讨论】:

      【解决方案2】:

      Lucene 中没有内置任何东西可以根据字段折叠结果。您需要自己实现。

      但是,他们最近在 Solr 中内置了此功能。

      http://www.lucidimagination.com/blog/2010/09/16/2446/

      【讨论】:

        【解决方案3】:

        从 3.2 版开始,lucene 支持基于字段对搜索结果进行分组。 http://lucene.apache.org/core/4_1_0/grouping/org/apache/lucene/search/grouping/package-summary.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-29
          • 2012-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-19
          相关资源
          最近更新 更多