二次評分給了用戶很多機(jī)會(huì)來定制業(yè)務(wù)邏輯
歡迎訪問本人博客:http://wangnan.tech
理解二次評分
二次評分是指重新計(jì)算查詢返回文檔中指定個(gè)數(shù)文檔的得分,es會(huì)截取查詢返回的前N個(gè)弄唧,并使用預(yù)定義的二次評分方法來重新計(jì)算他們的得分
二次評分查詢結(jié)構(gòu)
從最簡單的查詢?nèi)胧郑簃atch_all查詢類型冲杀,返回索引中所有文檔,每個(gè)返回的文檔的得分都是1.0身堡,這樣可以充分體現(xiàn)二次評分對查詢返回文檔集的影響
查詢范例如下:
改查詢將每一個(gè)文檔的得分改寫為該文檔的year字段中的值
返回結(jié)果:
二次評分參數(shù)配置
在resource對象中邓尤,必須配置下面的參數(shù):
- window_size 窗口大小,默認(rèn)值是from和size參數(shù)值之和贴谎,它指定了每個(gè)分片上參與二次評分的文檔個(gè)數(shù)
- query_weight 查詢權(quán)重汞扎,默認(rèn)值是1,原始查詢得分與二次評分的得分相加之前將乘以改值
- rescore_query_weight 二次評分查詢的權(quán)重值擅这,默認(rèn)值是1澈魄,二次評分查詢得分在與原始查詢得分相加之前,乘以該值
-
rescore_mode 二次評分模式蕾哟,默認(rèn)為total一忱,可用的選項(xiàng)有total、max谭确、min帘营、avg和mutiply
- total 得分是兩種查詢之he
- max 兩種查詢中的最大值
- min 兩種查詢中的最小值
- avg 兩種查詢的平均值
- multiply 兩種查詢的乘積
小結(jié)
- 有時(shí)候,我們需要顯示查詢結(jié)果逐哈,并且使得頁面上靠前文檔的順序能受到一些額外的規(guī)則控制芬迄,但遺憾的是,我們并不能通過二次評分來實(shí)現(xiàn)昂秃,也許有些讀者會(huì)想到window-size參數(shù)禀梳,然而實(shí)際上這個(gè)參數(shù)與返回列表中靠前文檔并無關(guān)系,他只是制定了每個(gè)分片應(yīng)該返回的文檔數(shù)肠骆,而且window_size不能小于頁面大小
- 二次評分功能并不能與排序一起使用算途,這是因?yàn)榕判虬l(fā)生在二次評分之前,所以排序沒有考慮后續(xù)新計(jì)算出來的文檔得分
(注:內(nèi)容整理自《深入理解Elasticsearch》)