1、在建立索引的時候提高文件的權重,根據因素欄位值來給文件設定boost.這種方式在lucene5之前有效,之後就無效了。不建議採用。
2、通過function_query來設定分數。
如在相關度相差不大的情況下,投票的數量越多排名越往前。可以採用簡單的線性方式來處理:
get /blogposts/post/_search
},"field_value_factor": }}}
其中
:
field:表示影響權重的字段例子中是votes通過上面設定後整個打分變為:modifier:表示影響的規則
修飾語 modifier 的值可以為:
none (預設狀態)
log 、 log1p 、 log2p 、 ln 、 ln1p 、 ln2p 、 square 、 sqrt 以及 reciprocal。
facror:表示影響因子。
new_score = old_score * log(1 + factor * number_of_votes)
factor 值大於 1 會提公升效果, factor 值小於 1 會降低效果。
初次之外還可以設定boost_mode影響因子和old_source通過什麼運算來得出新分值。
get /blogposts/post/_search
},"field_value_factor": ,
"boost_mode": "sum" ,
"max_boost": 1.5 }}}
boost_mode
multiply無論 field_value_factor 函式的結果如何,最終結果都不會大於 1.5評分 _score
與函式值的積(預設)
sum評分 _score
與函式值的和
min評分 _score
與函式值間的較小值
max評分 _score
與函式值間的較大值
replace
函式值替代評分 _score
max_boost
設定最大的得分分值
上線是一種線性的影響關係,有時會有範圍性質、分數變化緩慢的需求場景,此時在使用上面的方案未免為使分數變化的不太圓滑,es提供了三種衰減函式(decay functions)來計算分數,讓我們有能力在兩個滑動標準如:地點和**,時間等之間權衡。
linear、 exp 和 gauss (線性、指數和高斯函式),它們可以運算元值、時間以及經緯度地理座標點這樣的字段。所有三個函式都能接受以下引數:
origin:中心點 或字段可能的最佳值,落在原點 origin 上的文件評分 _score 為滿分 1.0 。這三個函式的唯一區別就是它們衰減曲線的形狀,用圖來說明會更為直觀scale:衰減率,即乙個文件從原點origin下落時,評分_score 改變的速度.(例如,每 £10 歐元或每 100 公尺)
decay:從原點 origin 衰減到 scale 所得的評分 _score ,預設值為 0.5 。
offset:以原點 origin 為中心點,為其設定乙個非零的偏移量 offset 覆蓋乙個範圍,而不只是單個原點。在範圍 -offset <= origin <= +offset 內的所有評分 _score 都是 1.0 。
圖 圖 33 「衰減函式曲線」 中所有曲線的原點origin
(即中心點)的值都是40
,offset
是5
,也就是在範圍40 - 5 <= value <= 40 + 5
內的所有值都會被當作原點origin
處理——所有這些點的評分都是滿分1.0
。
在此範圍之外,評分開始衰減,衰減率由scale
值(此例中的值為5
)和 衰減值decay
(此例中為預設值0.5
)共同決定。結果是所有三個曲線在origin +/- (offset + scale)
處的評分都是0.5
,即點30
和50
處。
linear
、exp
和gauss
(線性、指數和高斯)函式三者之間的區別在於範圍(origin +/- (offset + scale)
)之外的曲線形狀:
選擇曲線的依據完全由期望評分_score
的衰減速率來決定,即距原點origin
的值。
回到我們的例子:使用者希望租乙個離倫敦市中心近()且每晚不超過 £100 英鎊的度假屋,而且與距離相比,
我們的使用者對**更為敏感,這樣查詢可以寫成:
}},}
}],
"query":
},"score_mode": "multiply"}}
}
location 欄位以地理座標點 geo_point 對映。
price 欄位是數值。
price 語句是 location 語句權重的兩倍。
location 語句可以簡單理解為:
以倫敦市中作為原點 origin 。
所有距原點 origin 2km 範圍內的位置的評分是 1.0 。
距中心 5km ( offset + scale )的位置的評分是 0.5 。
weight 引數可以被用來調整每個語句的貢獻度,權重 weight 的預設值是 1.0 。這個值會先與每個句子的評分相乘,然後再通過 score_mode 的設定方式合併。
elasticsearch幾個概念解析
介紹下es的幾個概念 cluster 代表乙個集群,集群中有多個節點,其中有乙個為主節點,這個主節點是可以通過選舉產生的,主從節點是對於集群內部來說的。es的乙個概念就是去中心化,字面上理解就是無中心節點,這是對於集群外部來說的,因為從外部來看es集群,在邏輯上是個整體,你與任何乙個節點的通訊和與整...
elasticsearch 文件資料解析(五)
乙個文件不僅僅包含它的資料 也包含元資料 有關文件的資訊,三個必須的元資料元素如下 index 乙個 索引 應該是因共同的特性被分組到一起的文件集合。例如,你可能儲存所有的產品在索引 products 中,而儲存所有銷售的交易到索引 sales 中。雖然也允許儲存不相關的資料到乙個索引中,但這通常看...
Elasticsearch原理解析與效能調優
類似於insert。例如索引乙個文件到乙個索引 倒排索引 預設每個屬性都會有乙個倒排索引,可以設定屬性不被索引,它只能被覆蓋,不能被修改 型別類似表,同一索引的不同型別,可以擁有不同的字段,但應該擁有大部分相似的字段。它可以包含大小寫,不能包含句號,不能以下劃線開頭,長度限制為256.id文件的id...