动态访问ElasticSearch功能得分中的字段

时间:2015-04-24 14:43:44

标签: node.js elasticsearch

我在过去几天一直试图找到解决方案,但不能,所以这是我的问题。

基本上,我们在用户最终访问的文档中索引了一些用户最常用的搜索关键字。例如,如果用户'搜索"足球"很多,最后去文档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。很抱歉这个问题很长。

0 个答案:

没有答案