我有一堆"filter": []
的查询
然后是一堆评分函数:
"must": [ { "function_score": { "functions": [ ... ] } } ]
我试图让具有特定关键字的文档排名高于没有它的情况。
我尝试将其添加到我的functions
数组中:
{
"filter": {
"match": {
"[MY FIELD]": "[MY KEYWORD]"
}
},
"weight": 1
}
但我认为它恰恰相反,它将一个低于1的系数添加到匹配的系数,因此使MY KEYWORD
的文档排名更低。
我尝试搜索not
方法以匹配所有没有MY KEYWORD
的方法,但我在functions
的上下文中找不到任何内容。我发现match_not
但它在那里不起作用。
我的目标是,如果你有2个完全相同的文件,一个有MY KEYWORD
而另一个没有,我想要一个有更高的分数。
谢谢。
答案 0 :(得分:0)
我发现的一个解决方案是:
{
"script_score" : {
"script" : {
"inline": "String tmp = null; for (a in doc['MY_FIELD']) {tmp = a;} return tmp == 'MY_KEYWORD' ? 1.0 : DECAY_VALUE",
"lang": "painless"
}
},
"weight": MY_WEIGHT
}
我使用的衰减值为0.7
,重量也是0.7。
MY_FIELD必须是type:keyword