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

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

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

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

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

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

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

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

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

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

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

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

1.1 用戶偏好場景

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

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

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

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

1.2 隨機抽樣場景

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

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

1.3 時間敏感的查詢場景

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

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

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

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

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

1.5 特定字段影響場景

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

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

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

2、function_score 參數介紹

2.1 boost_mode 參數

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.2 score_mode

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3 提供的函數

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

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

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

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

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

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

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

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

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

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

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

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

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

3、function_score 使用實戰解讀

3.1 構造數據

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

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

首先,創建索引并添加一些文檔:uBp28資訊網——每日最新資訊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 查詢。uBp28資訊網——每日最新資訊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 查詢。uBp28資訊網——每日最新資訊28at.com

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

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

圖片圖片uBp28資訊網——每日最新資訊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" 字段的值生成一個隨機分數。uBp28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

示例如下:uBp28資訊網——每日最新資訊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"    }  }}

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

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

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

  • field_value_factor

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

  • boost_mode

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

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

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

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

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

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

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

以下是使用 gauss 函數的一個示例:uBp28資訊網——每日最新資訊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' 字段的高斯衰減得分調整"。uBp28資訊網——每日最新資訊28at.com

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

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

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

  • gauss

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • boost_mode

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

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

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

4、小結

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久精品一区二区三区中文字幕 | 麻豆成人在线观看| 久久久亚洲欧洲日产国码αv | 国产欧美日韩91| 国产乱码精品1区2区3区| 国产日韩欧美在线播放| 黄色工厂这里只有精品| 亚洲精品午夜精品| 午夜精品剧场| 欧美成人免费全部| 国产精品一区二区黑丝| 亚洲国产精品va在看黑人| 一本色道久久综合亚洲精品高清| 午夜亚洲一区| 欧美高清视频| 国产精品日韩高清| 亚洲欧洲精品天堂一级| 欧美亚洲视频在线观看| 蜜桃久久av| 国产精品一区二区三区久久久| 亚洲电影免费| 午夜免费久久久久| 欧美精品久久一区二区| 国产偷久久久精品专区| 日韩一级在线观看| 久久久亚洲高清| 国产精品国产一区二区| 亚洲福利免费| 欧美亚洲一区二区三区| 欧美精品一级| 狠狠色狠狠色综合日日tαg | 在线午夜精品| 欧美xxx在线观看| 国产日韩欧美在线观看| 99国产精品久久久久久久成人热 | 国产精品女主播在线观看| 亚洲国产专区校园欧美| 欧美一级夜夜爽| 欧美色图一区二区三区| 在线精品在线| 久久aⅴ国产欧美74aaa| 欧美三级特黄| 亚洲欧洲日本专区| 久久免费偷拍视频| 国产欧美日韩一区| 中国成人黄色视屏| 欧美大片在线观看一区二区| 国产午夜精品久久久久久久| 一本色道久久综合狠狠躁篇怎么玩 | 一区二区三区欧美视频| 免费一区二区三区| 国产一区久久久| 先锋影音一区二区三区| 欧美日韩国产亚洲一区| 在线观看日韩| 久久久久成人精品| 国产日韩三区| 午夜精品福利电影| 国产精品久久久久久久久婷婷| 亚洲美女av在线播放| 欧美不卡视频一区发布| 尤物精品在线| 久久久久久久91| 国产字幕视频一区二区| 欧美一区三区二区在线观看| 欧美午夜女人视频在线| 夜夜嗨av一区二区三区网站四季av| 欧美成人免费全部| 亚洲国产一区二区三区a毛片| 久久久亚洲一区| 国内免费精品永久在线视频| 欧美在线视频一区| 国产亚洲欧美一区| 久久精品国产免费观看| 国产一区二区高清不卡| 欧美中文在线观看| 国产亚洲综合在线| 久久精品国产久精国产爱| 国产午夜精品美女毛片视频| 欧美有码在线观看视频| 国产视频亚洲精品| 久久精品30| 加勒比av一区二区| 免费成人激情视频| 亚洲黄一区二区| 欧美激情精品久久久久久大尺度| 91久久国产综合久久蜜月精品 | av不卡在线观看| 欧美亚洲不卡| 亚洲欧美中日韩| 国产视频一区三区| 久久久久久久一区二区| 在线观看亚洲精品| 欧美国产一区在线| 中文久久乱码一区二区| 国产精品jizz在线观看美国| 亚洲在线一区二区| 国产亚洲欧美一区二区| 麻豆精品国产91久久久久久| 亚洲国产精品99久久久久久久久| 欧美激情一区二区三区在线视频观看 | 91久久夜色精品国产九色| 欧美激情按摩在线| 亚洲特级毛片| 国产亚洲欧美另类一区二区三区| 久久久久久久999| 亚洲国产精品久久久久| 欧美日韩1区2区| 亚洲欧美视频在线| 狠狠操狠狠色综合网| 欧美电影电视剧在线观看| 一本色道久久综合一区| 国产九九精品| 美日韩在线观看| 亚洲视频视频在线| 国产真实乱子伦精品视频| 欧美大尺度在线观看| 中文欧美字幕免费| 狠狠干狠狠久久| 欧美日韩三级视频| 久久aⅴ国产欧美74aaa| 91久久线看在观草草青青| 国产精品久久久久久久7电影| 久久久久久久久久久久久久一区| 最近中文字幕日韩精品| 国产精品久久久一区麻豆最新章节| 久久精品国产一区二区电影| 亚洲国产一区二区a毛片| 国产精品黄色在线观看| 久久免费视频网站| 亚洲网址在线| 黄色一区三区| 欧美性片在线观看| 久久露脸国产精品| 一级日韩一区在线观看| 国产一区二区精品在线观看| 欧美韩日一区| 久久激情视频| 在线一区观看| 精品不卡视频| 国产精品乱码妇女bbbb| 欧美成人r级一区二区三区| 午夜精品视频一区| 亚洲精品欧美在线| 国产综合色在线视频区| 欧美日韩亚洲网| 久久综合激情| 香蕉乱码成人久久天堂爱免费 | 欧美在线观看一区| 日韩一级二级三级| 伊人蜜桃色噜噜激情综合| 国产精品国色综合久久| 欧美成人精品| 久久精品视频导航| 亚洲一区二区三区高清 | 久久久精品一区二区三区| 一区二区三区波多野结衣在线观看| 国内精品久久久久久久影视麻豆| 欧美午夜电影完整版| 牛人盗摄一区二区三区视频| 亚洲欧美日本伦理| 一区二区电影免费观看| 亚洲国产欧美一区二区三区同亚洲| 国产欧美精品| 国产精品videosex极品| 欧美激情中文字幕乱码免费| 久久在线播放| 久久成人国产| 午夜欧美不卡精品aaaaa| 中文av字幕一区| 亚洲另类视频| 亚洲区中文字幕| 亚洲电影在线免费观看| 国产视频亚洲精品| 国产精品视频大全| 欧美视频一区二区三区四区| 欧美激情欧美狂野欧美精品| 麻豆乱码国产一区二区三区| 久久精品网址| 久久激情视频| 久久精品国产99精品国产亚洲性色| 亚洲欧美日韩视频二区| 亚洲图片激情小说| 这里只有精品电影| 这里只有精品在线播放| 日韩午夜三级在线| 亚洲精品一区在线观看香蕉| 亚洲欧洲精品一区二区| 亚洲二区免费| 亚洲国产精品一区二区第四页av| 在线观看国产精品淫| 好吊成人免视频| 国内精品模特av私拍在线观看 | 亚洲综合色视频| 亚洲午夜在线观看视频在线| 亚洲最新合集| 国产亚洲激情在线| 国产日韩亚洲欧美综合| 国产欧美日韩一区二区三区| 国产亚洲一区二区在线观看| 国产日韩欧美a| 国内精品久久久久影院色| 国内精品久久久久久久影视蜜臀| 国产曰批免费观看久久久|