我正在使用 Firebase 构建 iOS 应用程序,并使用 ElasticSearch 作为搜索引擎来获取更高级的查询。我正试图实现一个系统,可以根据查询从索引中获取随机记录。我已经使用 seed 和 "random_score" 函数使其工作。因此,所有文档都应该具有相等的被选中机会。是否可能添加提升或其他东西(抱歉,我是ES新手)?假设文档具有字段 "boost_enabled" 并设置为 true,则该文档将有3倍的可能性被选择,从而“增加”了随机选择的机会。理论上它应该是这样的:匹配查询的文档:
"document1"
"document2"
"document3"
它们被选中的机会相等(33%)
我希望实现的目标是,如果“document1”具有字段“boost_enabled”= true
它应该看起来像这样:
"document1"
"document1"
"document1"
"document2"
"document3"
现在,“document1”被选为随机记录的可能性增加了3倍。
非常感谢帮助。
编辑:
我想到了这样的东西,这正确吗?虽然我几乎确定它不正确...
"query" : {
"function_score": {
"query": {
"bool" : {
"must": {
"match_all": {}
},
"should": [
{ "exists" : {
"field" : "boost_enabled",
"boost" : 3
}
}
]
"filter" : filterArray
}
},
"functions": [
{
"random_score": {"seed": seed}
}
]
}
}
/ 马兹