我的应用程序索引讨论线程。讨论中的每个条目都被索引为具有 common_id 字段的单独 Lucene 文档,该字段可用于将搜索命中分组到一个讨论中。
当前执行搜索时,如果一个线程有 3 个条目,则返回 3 个单独的命中。尽管这是正确的,但从用户的角度来看,相同的条目多次出现在搜索中。
有没有办法告诉 lucene 在返回它们之前按 common_id 字段对搜索结果进行分组?
我的应用程序索引讨论线程。讨论中的每个条目都被索引为具有 common_id 字段的单独 Lucene 文档,该字段可用于将搜索命中分组到一个讨论中。
当前执行搜索时,如果一个线程有 3 个条目,则返回 3 个单独的命中。尽管这是正确的,但从用户的角度来看,相同的条目多次出现在搜索中。
有没有办法告诉 lucene 在返回它们之前按 common_id 字段对搜索结果进行分组?
我相信您要的是Field Collapsing,这是 Solr 的一个功能(我也相信 Elasticsearch)。
如果你想自己动手,一种可能的方法是:
另一种方法是将所有系列成员的 ID 存储在每个成员文档内的字段中。
Lucene 中没有内置任何东西可以根据字段折叠结果。您需要自己实施。
但是,他们最近将此功能内置到 Solr 中。
从 3.2 版开始,lucene 支持基于字段对搜索结果进行分组。 http://lucene.apache.org/core/4_1_0/grouping/org/apache/lucene/search/grouping/package-summary.html