我有一个用户配置文件,其中包含一些字段:
每个用户都应该能够基于某些过滤器(用户名,性别,年龄,语言)搜索其他用户,并且最终结果应该根据偏好(偏好的语言,偏好的年龄)按分数排序
考虑以下示例:
用户资料:
Randomdude希望对我们的ElasticSearch文档进行研究,他将设置以下过滤器:
因此,最终列表中应仅包含西类牙女性,但应优先选择语言 Realm 为英语或意大利语且年龄在20至30岁之间的人,而不排除其他人。因此,他仍然可以看到讲西类牙语的人,只有40岁,但几乎排在最后。
我正在使用Elasticsearch的php包装器。我尝试使用许多函数,但我认为应该使用函数得分查询,但由于文档对我来说非常混乱,因此无法使用。
最佳答案
我将了解ES:D我通过像这样的 bool(boolean) 查询解决了这个问题,但是我不确定这是最好的解决方案
{
"query" : {
"bool" : {
"must" :[
{"term" : { "gender" : "female" } },
{"term" : { "nationality" : "spanish" } },
],
"should" :[
{"match" : { "language" : { "query" : "english italian","operator" : "or" } } },
]
}
}
}
关于php - 替换默认的Elasticsearch分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126950/