我在过去几天一直试图找到解决方案,但不能,所以这是我的问题。
基本上,我们在用户最终访问的文档中索引了一些用户最常用的搜索关键字。例如,如果用户'搜索"足球"很多,最后去文档X,文档X将有类似
的东西keywords: {
"football": some int boost value
}
我想在用户使用关键字Y进行搜索后检查,如果在检索到的文档中,字段为' keywords.Y'存在,如果存在,我会使用函数得分将Y乘以_score,否则,我将只返回_score。
这甚至可能吗?这是我到目前为止所建立的。
{
"size": "20",
"from": "0",
"sort": [],
"query": {
"function_score": {
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"query_string": {
"fields": [
"cuisines.name.en^8",
"cuisines.name.ar^8"
],
"query": "+mori",
"use_dis_max": true,
"default_operator": "and"
}
},
{
"fuzzy_like_this_field": {
"name.en": {
"like_text": "mori",
"boost": 15,
"min_similarity": 0.6
}
}
}
]
}
},
"filter": {
"and": [
{
"term": {
"flag": 1
}
},
{
"term": {
"cityID": "1000"
}
}
]
}
}
},
"functions": [
{
"script_score": {
"params": {
"q": "mori"
},
"script": "_score;"
}
}
],
"score_mode": "multiply"
}
}
}
所以基本上在这里,我想访问字段keywords.mori。很抱歉这个问题很长。