首页 文章

Elasticsearch基于事件的衰减分数

提问于
浏览
6

我正试图找到一种方法来防止多个帖子出现在来自同一作者的搜索结果中 . 到目前为止,我已经尝试过随机评分,这让我可以保持分页 . 但是,在10个结果的给定页面中,我仍然可以拥有多达4个相同的作者 .

有没有办法根据结果集中某个字段出现的次数对文档进行评分?据我所知,你不能在评分脚本中保留变量或对象 .

我已经研究了几种实现这一目标的方法,但其中很多都有不少缺点 . 例如删除重复项,然后再次调用以检索已排除当前作者的新结果集 . 然而,这也可以返回多个相同的作者 . 因此,我将逐个查询以替换结果集中的重复作者,这会破坏深层分页,因为最终用于替换重复项的其他结果集会在标准搜索之前耗尽页面 . 我也尝试过不能分页的聚合 .

是否有任何功能可以根据同一作者(或字段)的文档出现次数来分散或减去文档的分数?

3 回答

  • -1

    你有什么理由不能使用grouping?只需按用户分组并定义组的顺序 .

  • 0

    编辑:在你回答这个答案之前,因为它与Lucene有关而不是问题的真正答案:1 . ElasticSearch是基于Lucene的2. OP想要做的事情真的很难做,而我只是想提供帮助 . ..

    你可以尝试从这里玩腐烂:

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.html

    但是,这不允许对当前查询的先前命中进行反向引用(因为某种技术需要与您的用例匹配)

    我在使用Lucene / Hibernate-Search的webapp中遇到了类似的问题,我没有得到令人满意的结果,但它仍然困扰着我 .

    我认为最好通过尝试以另一种方式实现排序来获得良好的用户体验 .

  • 0

    您无法使弹性搜索排序多样化 . 你只能 random_seed 得分文件,并希望最好的 . 您可以使用顶级命中聚合器之类的东西来聚合每个作者的存储桶,但是您不能对一组存储桶进行分页 . 因此打破了分页 .

    See here for more information

相关问题