日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

來源: 責編: 時間:2023-08-05 11:45:48 5108觀看
導讀在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。近期有同學反饋,function_score 的相關參數不好理

在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。h0w28資訊網——每日最新資訊28at.com

function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。h0w28資訊網——每日最新資訊28at.com

近期有同學反饋,function_score 的相關參數不好理解,本文將深入探討 function_score 的核心參數和函數。h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

1、function_score 函數的用途及適用場景

Elasticsearch 的 function_score 查詢是一種強大的工具,它可以允許我們修改文檔的基本的相關評分,讓我們在特定的應用場景下獲得更好的搜索結果。h0w28資訊網——每日最新資訊28at.com

這個功能通過提供了一組內置函數(如 script_score, weight, random_score, field_value_factor, decay functions等),以及一系列參數(如boost_mode和score_mode等)來實現。h0w28資訊網——每日最新資訊28at.com

以下是一些 function_score 可以應用的場景:h0w28資訊網——每日最新資訊28at.com

1.1 用戶偏好場景

如果需要了解用戶的興趣或者行為,我們可以使用 function_score 來提升用戶可能感興趣的結果。h0w28資訊網——每日最新資訊28at.com

比如在推薦系統中,如果我們已知道用戶喜歡某個作者的文章,可以提升這個作者的文章的得分。h0w28資訊網——每日最新資訊28at.com

比如最近火熱的“羅剎海市”就被網易云音樂推薦到最前面。h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

1.2 隨機抽樣場景

如果我們需要從一個大的數據集中隨機抽樣,可以使用 random_score 函數。h0w28資訊網——每日最新資訊28at.com

這個函數會給每個文檔生成一個隨機得分,從而讓我們能夠得到隨機的搜索結果。h0w28資訊網——每日最新資訊28at.com

1.3 時間敏感的查詢場景

對于一些時間敏感的數據,比如新聞、博客文章或者論壇帖子,新的文檔通常比舊的文檔更相關。h0w28資訊網——每日最新資訊28at.com

在這種情況下,我們可以使用 decay functions(衰減函數) 來降低舊的文檔的得分。h0w28資訊網——每日最新資訊28at.com

1.4 地理位置敏感的查詢場景

如果我們的應用關心地理位置,比如房地產或者旅游相關的應用。h0w28資訊網——每日最新資訊28at.com

可以使用 decay functions (衰減函數)來提升接近某個地理位置的文檔的得分。h0w28資訊網——每日最新資訊28at.com

1.5 特定字段影響場景

如果我們的文檔有一些字段值可以影響相關度評分,可以使用 field_value_factor (字段值因子)函數。h0w28資訊網——每日最新資訊28at.com

比如在電商場景,一個商品的銷量、評分或者評論數量可能會影響搜索結果的排序。h0w28資訊網——每日最新資訊28at.com

總的來說,function_score 提供了一種靈活的方式來滿足各種復雜的相關度評分需求。h0w28資訊網——每日最新資訊28at.com

2、function_score 參數介紹

2.1 boost_mode 參數

boost_mode 決定了如何將查詢得分和函數得分進行組合。h0w28資訊網——每日最新資訊28at.com

可接受的參數有:h0w28資訊網——每日最新資訊28at.com

boost_modeh0w28資訊網——每日最新資訊28at.com

描述h0w28資訊網——每日最新資訊28at.com

multiplyh0w28資訊網——每日最新資訊28at.com

查詢得分和函數得分相乘(默認值)h0w28資訊網——每日最新資訊28at.com

sumh0w28資訊網——每日最新資訊28at.com

查詢得分和函數得分相加h0w28資訊網——每日最新資訊28at.com

avgh0w28資訊網——每日最新資訊28at.com

查詢得分和函數得分的平均值h0w28資訊網——每日最新資訊28at.com

firsth0w28資訊網——每日最新資訊28at.com

僅僅使用函數得分h0w28資訊網——每日最新資訊28at.com

maxh0w28資訊網——每日最新資訊28at.com

查詢得分和函數得分中的最大值h0w28資訊網——每日最新資訊28at.com

minh0w28資訊網——每日最新資訊28at.com

查詢得分和函數得分中的最小值h0w28資訊網——每日最新資訊28at.com

replaceh0w28資訊網——每日最新資訊28at.com

完全替換查詢得分,只使用函數得分h0w28資訊網——每日最新資訊28at.com

2.2 score_mode

score_mode 決定了如何處理多個函數的分數。h0w28資訊網——每日最新資訊28at.com

可接受的參數有:h0w28資訊網——每日最新資訊28at.com

score_modeh0w28資訊網——每日最新資訊28at.com

描述h0w28資訊網——每日最新資訊28at.com

multiplyh0w28資訊網——每日最新資訊28at.com

各個函數得分相乘h0w28資訊網——每日最新資訊28at.com

sumh0w28資訊網——每日最新資訊28at.com

各個函數得分相加(默認值)h0w28資訊網——每日最新資訊28at.com

avgh0w28資訊網——每日最新資訊28at.com

各個函數得分的平均值h0w28資訊網——每日最新資訊28at.com

firsth0w28資訊網——每日最新資訊28at.com

僅僅使用第一個函數的得分h0w28資訊網——每日最新資訊28at.com

maxh0w28資訊網——每日最新資訊28at.com

各個函數得分中的最大值h0w28資訊網——每日最新資訊28at.com

minh0w28資訊網——每日最新資訊28at.com

各個函數得分中的最小值h0w28資訊網——每日最新資訊28at.com

2.3 提供的函數

function_score 提供了多種函數類型來進行自定義評分:h0w28資訊網——每日最新資訊28at.com

Score Functionh0w28資訊網——每日最新資訊28at.com

描述h0w28資訊網——每日最新資訊28at.com

script_scoreh0w28資訊網——每日最新資訊28at.com

用腳本計算得分h0w28資訊網——每日最新資訊28at.com

weighth0w28資訊網——每日最新資訊28at.com

簡單地修改查詢得分,不考慮字段值h0w28資訊網——每日最新資訊28at.com

random_scoreh0w28資訊網——每日最新資訊28at.com

生成隨機得分h0w28資訊網——每日最新資訊28at.com

field_value_factorh0w28資訊網——每日最新資訊28at.com

使用字段值進行計算得分h0w28資訊網——每日最新資訊28at.com

decay functionsh0w28資訊網——每日最新資訊28at.com

衰減函數,根據字段值的距離計算得分,越近得分越高h0w28資訊網——每日最新資訊28at.com

3、function_score 使用實戰解讀

3.1 構造數據

為了幫助大家更好地理解,我們將創建一個簡單的索引,插入一些文檔,并對它們執行 function_score 查詢。h0w28資訊網——每日最新資訊28at.com

假設我們有一個名為 articles 的索引,里面存儲了一些博客文章的數據,包括作者(author),標題(title),內容(content),以及這篇文章的喜歡數量(likes)。h0w28資訊網——每日最新資訊28at.com

首先,創建索引并添加一些文檔:h0w28資訊網——每日最新資訊28at.com

PUT /articles{  "mappings": {    "properties": {      "title": { "type": "text" },      "author": { "type": "text" },      "content": { "type": "text" },      "likes": { "type": "integer" }    }  }}POST /_bulk{ "index" : { "_index" : "articles", "_id" : "1" } }{ "title": "Elasticsearch Basics", "author": "John Doe", "content": "This article introduces the basics of Elasticsearch.", "likes": 100 }{ "index" : { "_index" : "articles", "_id" : "2" } }{ "title": "Advanced Elasticsearch", "author": "Jane Doe", "content": "This article covers advanced topics in Elasticsearch.", "likes": 500 }{ "index" : { "_index" : "articles", "_id" : "3" } }{ "title": "Elasticsearch Function Score Query", "author": "John Doe", "content": "This article discusses the function_score query in Elasticsearch.", "likes": 250 }

現在我們有了一些文檔,讓我們對它們執行 function_score 查詢。h0w28資訊網——每日最新資訊28at.com

3.2 使用 script_score 函數實現基于 'likes' 字段的對數加權排序

GET /articles/_search{  "query": {    "function_score": {      "query": {        "match_all": {}      },      "boost": "5",      "functions": [        {          "script_score": {            "script": {              "source": "Math.log(1 + doc['likes'].value)"            }          }        }      ],      "boost_mode": "multiply"    }  }}

上述查詢使用了 Elasticsearch 的 function_score 查詢。h0w28資訊網——每日最新資訊28at.com

它首先對 "articles" 索引中的所有文檔進行匹配(使用 match_all 查詢),然后使用一個腳本函數(script_score),該腳本會計算每個文檔的 "likes" 字段的自然對數值加一(Math.log(1 + doc['likes'].value)),然后把這個得分與原始查詢得分相乘(由于 boost_mode 被設為了 "multiply"),最終的得分再乘以5(由于 boost 被設為了 "5")。這種查詢用于根據 "likes" 字段對結果進行加權排序。h0w28資訊網——每日最新資訊28at.com

執行結果如下:h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

3.3 使用 random_score 生成基于 'likes' 字段的全隨機結果查詢

GET /articles/_search{  "query": {    "function_score": {      "query": {         "match_all": {}       },      "functions": [        {          "random_score": {            "field": "likes"          }        }      ],      "boost_mode": "replace"    }  }}

上述查詢使用 Elasticsearch 的 function_score 查詢,并配合使用 random_score 函數。random_score 函數根據 "likes" 字段的值生成一個隨機分數。h0w28資訊網——每日最新資訊28at.com

重要的是,由于沒有提供一個固定的種子(seed),所以每次執行這個查詢都會返回一個全新的隨機排序結果。h0w28資訊網——每日最新資訊28at.com

match_all 是基礎查詢,用來匹配所有文檔。然后 random_score 函數基于 "likes" 字段值生成隨機分數。h0w28資訊網——每日最新資訊28at.com

boost_mode 設為 "replace" 表示忽略基礎查詢的分數,完全使用 random_score 函數的分數作為最終結果。所以,這個查詢會在每次執行時都返回全新的隨機排序結果。h0w28資訊網——每日最新資訊28at.com

執行結果如下圖所示:h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

3.4 field_value_factor 函數根據某個字段的值來修改_score

這對于一些字段很有用,比如"likes":一篇有很多"likes"的文章可能比"likes"少的文章更相關。h0w28資訊網——每日最新資訊28at.com

示例如下:h0w28資訊網——每日最新資訊28at.com

GET /articles/_search{  "query": {    "function_score": {      "query": {        "match": {          "content": "Elasticsearch"        }      },      "functions": [        {          "field_value_factor": {            "field": "likes",            "factor": 1.2,            "modifier": "sqrt",            "missing": 1          }        }      ],      "boost_mode": "multiply"    }  }}

在這個查詢中:h0w28資訊網——每日最新資訊28at.com

  • "match": { "content": "Elasticsearch" }

表示基礎查詢是在 "content" 字段中匹配包含 "Elasticsearch" 的文章。h0w28資訊網——每日最新資訊28at.com

  • field_value_factor

函數用來基于 "likes" 字段的值調整查詢得分。它首先取 "likes" 字段的值,如果文檔沒有 "likes" 字段或者該字段的值為空,那么將使用 "missing" 參數指定的默認值1。然后,它將取得的值乘以 "factor" 參數指定的因子1.2。最后,它將結果進行 "modifier" 參數指定的平方根運算("sqrt")。h0w28資訊網——每日最新資訊28at.com

  • boost_mode

參數設置為 "multiply",這表示將基礎查詢的得分和 field_value_factor 函數計算得出的得分相乘,以得到最終的文檔得分。h0w28資訊網——每日最新資訊28at.com

所以,這個查詢會返回包含 "Elasticsearch" 的文章,并且文章的得分會根據 "likes" 字段的值進行調整,"likes" 值越高的文章,得分也會越高。h0w28資訊網——每日最新資訊28at.com

執行結果如下:h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

3.5 decay functions 根據某個字段的值的距離來調整_score。

如果值接近某個中心點,得分就會更高。這對于日期或地理位置字段特別有用。h0w28資訊網——每日最新資訊28at.com

Elasticsearch 提供了三種衰減函數:線性(linear)、指數(exp)、和高斯(gauss)。h0w28資訊網——每日最新資訊28at.com

以下是使用 gauss 函數的一個示例:h0w28資訊網——每日最新資訊28at.com

GET /articles/_search{  "query": {    "function_score": {      "query": {        "match": {          "content": "Elasticsearch"        }      },      "functions": [        {          "gauss": {            "likes": {              "origin": "100",              "scale": "20",              "offset": "0",              "decay": 0.5            }          }        }      ],      "boost_mode": "multiply"    }  }}

上述執行可概括為:使用 function_score 和 gauss 函數對含有 'Elasticsearch' 的文章進行基于 'likes' 字段的高斯衰減得分調整"。h0w28資訊網——每日最新資訊28at.com

在這個查詢中:h0w28資訊網——每日最新資訊28at.com

  • "match": { "content": "Elasticsearch" }

表示基礎查詢是在 "content" 字段中匹配包含 "Elasticsearch" 的文章。h0w28資訊網——每日最新資訊28at.com

  • gauss

函數則是用來對 "likes" 字段的值進行高斯衰減處理。h0w28資訊網——每日最新資訊28at.com

其中,h0w28資訊網——每日最新資訊28at.com

參數h0w28資訊網——每日最新資訊28at.com

h0w28資訊網——每日最新資訊28at.com

描述h0w28資訊網——每日最新資訊28at.com

originh0w28資訊網——每日最新資訊28at.com

100h0w28資訊網——每日最新資訊28at.com

期望的中心點,即 "likes" 字段的最理想值h0w28資訊網——每日最新資訊28at.com

scaleh0w28資訊網——每日最新資訊28at.com

20h0w28資訊網——每日最新資訊28at.com

表示衰減的速度,也就是距離 "origin" 值多遠時,得分會衰減到原始得分的一半h0w28資訊網——每日最新資訊28at.com

offseth0w28資訊網——每日最新資訊28at.com

0h0w28資訊網——每日最新資訊28at.com

表示在距離 "origin" 多少的范圍內不進行衰減h0w28資訊網——每日最新資訊28at.com

decayh0w28資訊網——每日最新資訊28at.com

0.5h0w28資訊網——每日最新資訊28at.com

表示當距離超過了 "scale" 之后,得分會以多快的速度衰減,例如 0.5 表示超過 "scale" 距離后,得分會衰減到原始得分的一半h0w28資訊網——每日最新資訊28at.com

  • boost_mode

參數設置為 "multiply",這表示將基礎查詢的得分和 gauss 函數計算得出的得分相乘,以得到最終的文檔得分。h0w28資訊網——每日最新資訊28at.com

所以,這個查詢會返回包含 "Elasticsearch" 的文章,并且文章的得分會根據 "likes" 字段的值進行高斯衰減處理,"likes" 值越接近100的文章,得分也會越高。h0w28資訊網——每日最新資訊28at.com

圖片圖片h0w28資訊網——每日最新資訊28at.com

4、小結

在深入了解 Elasticsearch 的 function_score 后,我們可以明顯感受到其在搜索應用中的強大作用。無論是基于特定字段值的排序,還是利用自定義腳本微調搜索結果,function_score 都能發揮其出色的性能。h0w28資訊網——每日最新資訊28at.com

盡管 function_score 的參數和選項多樣,初看可能會覺得復雜,但只需理解各參數的含義和作用,我們就能根據需求靈活運用。實際案例中,我們使用了 script_score、field_value_factor、random_score 和 decay functions 等函數,演示了如何通過 function_score 滿足復雜的搜索需求。h0w28資訊網——每日最新資訊28at.com

但是,我們也必須注意,在使用 function_score 時,要慎重考慮性能問題,因為復雜的函數和腳本可能占用大量計算資源。在實際應用中,我們應始終關注這一點,以維護良好的系統性能。h0w28資訊網——每日最新資訊28at.com

此外,隨著數據和用戶行為的不斷變化,我們需要持續觀察、學習和調整搜索策略,以不斷提升用戶體驗。在這個過程中,function_score 將是我們強有力的工具。h0w28資訊網——每日最新資訊28at.com

總的來說,Elasticsearch 的 function_score 是一個強大而靈活的工具,只要我們深入了解并恰當使用,就能夠挖掘其巨大的潛力,提升我們的搜索應用性能和用戶體驗。h0w28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-132-0.html深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 在線圖片編輯器,支持PSD解析、AI摳圖等

下一篇: 三萬字盤點 Spring 九大核心基礎功能

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美激情第一页xxx| 久久国产精品一区二区三区四区 | 国外成人性视频| 国产在线精品二区| 亚洲第一区在线| 日韩亚洲欧美中文三级| 亚洲专区欧美专区| 久久久久久久网| 欧美精品系列| 国产精品乱子乱xxxx| 国产一区二区电影在线观看| 亚洲第一天堂av| 亚洲手机视频| 久久黄色影院| 欧美日韩色一区| 国产亚洲视频在线| 亚洲精品国产精品久久清纯直播| 亚洲午夜激情网站| 久久在线视频| 国产精品高清在线观看| 国内精品久久久久久影视8 | 久久成人18免费网站| 欧美电影免费| 国产精品每日更新| 亚洲国产成人porn| 午夜精品久久久久久久99水蜜桃| 欧美成人精品激情在线观看 | 国产美女精品一区二区三区| 亚洲国产欧美另类丝袜| 午夜精品久久| 欧美激情二区三区| 国产字幕视频一区二区| 一本色道88久久加勒比精品| 久久久女女女女999久久| 欧美日韩中文字幕| 亚洲第一天堂av| 欧美一级日韩一级| 欧美日韩一区在线| 亚洲国产成人在线播放| 欧美亚洲网站| 欧美三级不卡| 亚洲精品1234| 久久久噜噜噜久噜久久| 国产精品一区二区你懂得| 9l国产精品久久久久麻豆| 久久夜色精品国产| 国产精品综合久久久| 一二三四社区欧美黄| 免费观看一区| 黄色精品一二区| 午夜视频久久久| 欧美日韩高清一区| 亚洲国产女人aaa毛片在线| 久久国产加勒比精品无码| 国产精品久久久久婷婷| 夜夜嗨av一区二区三区四区| 欧美激情综合在线| 亚洲高清色综合| 久久久久久亚洲精品中文字幕 | 国产精品爱久久久久久久| 亚洲精品免费网站| 鲁大师影院一区二区三区| 韩国免费一区| 久久久国产精品亚洲一区| 国产精品影片在线观看| 亚洲一区二区不卡免费| 欧美日韩一区高清| 99精品99| 欧美日韩黄色大片| 亚洲免费电影在线| 欧美激情欧美狂野欧美精品| 亚洲国产精品一区二区第四页av | 欧美h视频在线| 在线观看亚洲精品| 久久在线免费视频| 在线播放豆国产99亚洲| 久久久高清一区二区三区| 国产欧美一区二区三区另类精品 | 欧美三级电影大全| 亚洲视频精品在线| 国产精品高清在线| 亚洲一区二区在线免费观看| 欧美日韩在线一区| 亚洲视频图片小说| 国产精品久久二区| 亚洲欧美日韩一区| 国产日韩欧美视频在线| 欧美在线三区| 伊人蜜桃色噜噜激情综合| 久久亚洲高清| 亚洲国产高潮在线观看| 欧美大片免费观看在线观看网站推荐| 亚洲国产二区| 欧美精品一区二区三区蜜桃| 日韩视频在线观看一区二区| 欧美日本韩国| 亚洲午夜久久久| 国产精品综合不卡av| 欧美中文日韩| 亚洲高清电影| 欧美日本免费| 亚洲伊人一本大道中文字幕| 国产精品永久免费观看| 久久久久高清| 亚洲国产精品电影| 欧美日本不卡视频| 亚洲综合欧美| 国内精品久久久久久| 免费人成精品欧美精品| 日韩一区二区免费看| 国产精品麻豆成人av电影艾秋| 午夜精品理论片| 激情婷婷亚洲| 欧美激情偷拍| 亚洲欧美精品suv| 玉米视频成人免费看| 欧美激情一区二区三区四区 | 欧美精品1区| 一区二区三区www| 国产精品一区免费视频| 久久久免费精品| 日韩一级免费| 国产亚洲欧洲| 欧美日韩精品一二三区| 欧美一级视频精品观看| 亚洲成人在线观看视频| 欧美日韩一区二区在线播放| 久久aⅴ国产紧身牛仔裤| 亚洲欧洲精品一区二区三区不卡| 欧美性大战久久久久久久| 久久er精品视频| 亚洲精品久久久久中文字幕欢迎你| 欧美日韩在线一区二区| 久久久99免费视频| 中文网丁香综合网| 一区二区自拍| 国产精品日日摸夜夜摸av| 鲁大师成人一区二区三区| 亚洲一区欧美| 亚洲国产精品va在线看黑人| 国产精品日韩一区二区| 欧美激情按摩| 久久久久成人精品免费播放动漫| 在线一区二区三区四区| 极品尤物久久久av免费看| 国产精品高潮呻吟久久| 欧美成人资源| 久久国产主播精品| 亚洲网站啪啪| 亚洲人在线视频| 国内精品视频一区| 国产精品久久久久久户外露出| 男女视频一区二区| 欧美在线一区二区三区| 亚洲性色视频| 亚洲国产一区二区三区青草影视| 国产毛片一区二区| 欧美日韩精品免费观看| 久久人91精品久久久久久不卡| 亚洲婷婷综合色高清在线| 亚洲欧洲一区二区天堂久久| 国产亚洲美州欧州综合国| 欧美日韩一级片在线观看| 欧美a级一区| 久久久久久久尹人综合网亚洲| 亚洲免费在线播放| 一二美女精品欧洲| 亚洲麻豆一区| 亚洲国产精品一区二区www| 国产综合久久久久久| 国产精品天天看| 欧美日韩性视频在线| 欧美超级免费视 在线| 久久久精品tv| 性欧美video另类hd性玩具| 一区二区三区欧美在线| 亚洲精品久久久蜜桃 | 亚洲国产高清在线观看视频| 国产亚洲欧洲| 国产精品亚洲不卡a| 欧美日一区二区在线观看 | 国产精品素人视频| 欧美三级电影大全| 欧美日韩国产综合一区二区| 欧美成人综合网站| 欧美日韩亚洲成人| 欧美综合二区| 国产一区999| 亚洲欧美成aⅴ人在线观看| 亚洲黄色毛片| 国产精品一级| 欧美福利一区二区| 亚洲午夜黄色| 99亚洲精品| 国产一二三精品| 久久视频一区| 亚洲国产高清在线观看视频| 嫩草影视亚洲| 亚洲国产第一| 国产真实乱偷精品视频免| 欧美+亚洲+精品+三区| 亚洲人成网站在线观看播放| 国产精品老女人精品视频| 久久九九国产精品怡红院|