2017-09-15 15 views
0

我有一堆"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

的一個解決方案,我發現是:

{ 
    "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

一個decay_value和0.7的重量太。

而MY_FIELD需要是type:keyword