如何避免分组SOLR搜索中的重复结果

时间:2013-02-01 18:14:04

标签: solr duplicate-removal

我有一个SOLR查询

group.field=USER_TYPE&group.limit=3&group.format=grouped

所以,这完全基于用户类型进行分组。但是,组内的结果包含重复。也就是说,每个用户都有唯一的user_id和user_group。每个用户可以拥有多个user_group。因此,结果包含具有不同user_groups和相同user_id的重复用户。我希望分组结果不应包含重复的user_id值。

{"groupValue":"A","doclist":{"numFound":849956,"start":0,"maxScore":9.992027,\
    "docs":[
        {"user_group":"GPA","user_id":"4443510",.....},
        {"user_group":"GPB","user_id":"4443510",.....},
        {"user_group":"GPC","user_id":"4443510",.....},
        ....
        ]

在这种情况下,任何人都可以帮助避免重复。

修改 我期待结果可能是

{"groupValue":"A","doclist":{"numFound":849956,"start":0,"maxScore":9.992027,       
    "docs":[
        {"groupValue":"4443510"
            "docs":[            
                {"user_group":"GPA","user_id":"4443510",.....},
                {"user_group":"GPB","user_id":"4443510",.....},
                {"user_group":"GPC","user_id":"4443510",.....},
                ....
                ]
        ....
        ]

1 个答案:

答案 0 :(得分:0)

我认为不可能在小组内进行分组。

但另一方面,我认为你可以通过修改索引的方式来解决这个问题。

现在,每个user_id都有多个文档:

 "docs":[            
                {"user_group":"GPA","user_id":"4443510",.....},
                {"user_group":"GPB","user_id":"4443510",.....},
                {"user_group":"GPC","user_id":"4443510",.....},
                ....
                ]

您可以按照以下方式进行修改以解决问题:

 "docs":[            
                {"user_group":["GPA","GPB","GPC"],"user_id":"4443510",.....},
                {"user_group":["GPB"],"user_id":"4443511",.....},
                {"user_group":["GPA","GPC"],"user_id":"4443512",.....},
                ....
                ]

我的意思是您可以将 user_group 修改为 mutivalued ,以便每个用户只有一个文档