我正在使用Elastica在PHP上使用弹性搜索。
我正在检索由项目组成的列表。一些项目由编辑支付和/或选择。目前,我只是通过自定义字段“得分”对它们进行排序,根据质量对这些项目进行排名。我希望有一种方法可以默认显示5个随机列表(仅当它们没有搜索或过滤时),这些列表由编辑支付并选择。
所以我目前正在做的是使用custom filter score query检索这5个列表,将脚本设置为使用random()。在按分数排序的单独查询中,我排除了这5个列表。我的问题当然是分页,它似乎是一个黑客,使用两个查询,并为此目的排除一个查询的结果。
我有这样的事情:
{
"custom_filters_score" : {
"query" : {
"match_all" : {}
},
"filters" : [
...
],
"script" : "random()"
}
}
所以我的问题是,最简单的方法是什么?我已经看过功能评分,不确定这是否是我正在寻找的。 p>
答案 0 :(得分:0)
我不确定如何使用Elastica完成此操作,我从未使用过它。但是在ElasticSearch中,您希望使用random_score函数,其种子值将与分页保持一致。这样你可以确定不会在不同的页面上多次获得相同的结果。