2017-07-07 57 views
0

辦法,我有一個非常簡單的查詢:有沒有設定一個分數範圍(或最高分)的查詢

match: { 
    field => { 
    boost: 4, 
    query: term, 
    fuzziness: 'AUTO', 
    } 
} 

與幾個(約10)等組成使用constant_score查詢其中的大多數。問題在於,在特定條件下,我的查詢的分數太大,取消所有其他查詢結果。

這裏的解釋部分:

"details" => [ 
[0] { 
     "value" => 63.656006, 
"description" => "sum of:", 
    "details" => [ 
    [0] { 
       "value" => 63.656006, 
     "description" => "weight(title.de:kandinsky in 1694239) [PerFieldSimilarity], result of:", 
      "details" => [ 
      [0] { 
         "value" => 63.656006, 
       "description" => "score(doc=1694239,freq=1.0 = termFreq=1.0\n), product of:", 
        "details" => [ 
        [0] { 
           "value" => 4.0, 
         "description" => "boost", 
          "details" => [] 
        }, 
        [1] { 
           "value" => 11.3820715, 
         "description" => "idf, computed as log(1 + (docCount - docFreq + 0.5)/(docFreq + 0.5)) from:", 
[...] 

擁有你所看到的,我有一個得分11.38,由於IDF。 我的其他查詢(分數介於1和3之間)完全沒用。

我的問題是:

我怎樣才能設置一個查詢最大可能得分?

或者,甚至更好,我可以爲我的查​​詢設置一系列分數嗎?

我想避免這個字段的constant_score查詢,我需要一些TF/IDF和分數的概念,但沒有那麼強。

我嘗試這樣做:

function_score: { 
    query: { match: { 
    field => term, 
    }}, 
    score_mode: :avg, 
    script_score: { 
    script: { 
     inline: "4 * (1 + Math.log(2 + _score))", 
    } 
    }, 
} 

這是更好,但它仍然可以在某些情況下執行一個非常高的分數。

回答

相關問題