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))",
}
},
}
這是更好,但它仍然可以在某些情況下執行一個非常高的分數。
是的,我已經嘗試過(我剛剛更新OP)。它不允許我創建一個分數範圍,只是爲了限制一些分數值。 –