【发布时间】:2017-12-23 04:35:05
【问题描述】:
我正在使用 Firebase 构建一个 iOS 应用,并使用 ElasticSearch 作为搜索引擎来获取更高级的查询。
我正在尝试实现一个系统,在该系统中,我可以根据查询从索引中获取随机记录。我已经使用带有种子的“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}
}
]
}
}
/疯子
【问题讨论】:
标签: elasticsearch random