美文网首页
Solr的查询结果去重

Solr的查询结果去重

作者: Ombres | 来源:发表于2019-05-16 22:43 被阅读0次

    先说一下背景,由于业务需要,之前的旧版本的SolrCloud搜索业务需要针对某个字段进行查询结果去重,自然而然就想到了Solr自带的两种分组功能。

    Group

    Group将具有公共字段值的文档进行分组,并返回每个组的顶部文档(可以指定排序)。但是最终的结果是展示在grouped这个结果集中。

    Collapsing/Expand

    Collapsing 和 Expand 组件结合起来,可以在 Solr 搜索结果中根据指定字段折叠,从而对文档分组去重的效果。
    Collapsing常规用法是写在fq中,最简单的启用方式如下示例:

    fq={!collapse field=group_field }
    

    SolrCloud使用Collapsing结果不准确

    原因

    Collapsing功能是在每个shard搜索上进行折叠,但是在最终汇总结果时并没有再次按照相应的折叠方式进行合并,导致可能出现的情况就是同一个分组出现多次。

    解决方法

    在索引数据时使用路由,使用折叠字段作为路由字段,这样就可以把具有相同值的文档索引到同一个分片(但是这样也有坏处,可能会导致索引数据分布不均,海量数据下影响不大)。

    使用路由的方法

    在创建collection时使用以下两个参数

    router.name影响文件如何在shard之间的分配规则
    只有当router.name设置为implicit时,可以使用router.field参数指定使用文档中的哪个字段进行路由分配。

    相关文章

      网友评论

          本文标题:Solr的查询结果去重

          本文链接:https://www.haomeiwen.com/subject/jpxgaqtx.html