建立企業(yè)網(wǎng)站要多少錢足球比賽統(tǒng)計(jì)數(shù)據(jù)
使用了 function_score 查詢來根據(jù)某個(gè)字段的值對(duì)查詢結(jié)果進(jìn)行打分。以下是該查詢的主要部分:
query: 包含了實(shí)際執(zhí)行搜索的部分,在這里包括一個(gè) multi_match 查詢。
multi_match:用于在多個(gè)字段上執(zhí)行相同的查詢。
query:設(shè)置為 "popularity",表示要搜索包含這個(gè)短語的文檔。
fields:指定了要在其中執(zhí)行查詢的字段列表,這里是 "title" 和 "content" 字段。
function_score:允許您通過將查詢結(jié)果重新評(píng)分來自定義和影響每個(gè)文檔的得分。
field_value_factor:基于字段的具體值來影響文檔的得分。
field:指定了作為因子的字段,這里是 "votes" 字段。
modifier: 使用 "log1p" 函數(shù),對(duì)字段的值應(yīng)用 log(1 + value) 函數(shù)來調(diào)整得分。這種調(diào)整通常用于處理大量的小值,以平衡分?jǐn)?shù)的影響。
factor: 設(shè)置了一個(gè)乘法因子為 0.1,用于進(jìn)一步調(diào)整字段值對(duì)得分的影響力。
boost_mode: 設(shè)置為 "sum",表示將所有子查詢的分?jǐn)?shù)相加以計(jì)算最終得分。
max_boost: 設(shè)置了最大提升值為 3,即最終得分不會(huì)超過 3 倍。
換句話說,這個(gè)查詢的目的是:
在 "title" 和 "content" 字段中搜索包含短語 "popularity" 的文檔。
根據(jù)文檔中 "votes" 字段的值,并對(duì)其應(yīng)用log1p函數(shù),使用乘法因子 0.1 進(jìn)一步調(diào)整每個(gè)文檔的得分。
最終得分由子查詢得分和基于 "votes" 字段的加權(quán)因素相加,但不會(huì)超過 3。
random_score: 通過指定種子值 XXXX 來生成隨機(jī)分?jǐn)?shù),影響每個(gè)文檔的得分
DELETE blogsPUT /blogs/_doc/1
{"title": "About popularity","content": "In this post we will talk about...","votes": 0
}PUT /blogs/_doc/2
{"title": "About popularity","content": "In this post we will talk about...","votes": 100
}PUT /blogs/_doc/3
{"title": "About popularity","content": "In this post we will talk about...","votes": 1000000
}# 使用了 function_score 查詢來根據(jù)某個(gè)字段的值對(duì)查詢結(jié)果進(jìn)行打分。以下是該查詢的主要部分:
# query: 包含了實(shí)際執(zhí)行搜索的部分,在這里包括一個(gè) multi_match 查詢。
# multi_match:用于在多個(gè)字段上執(zhí)行相同的查詢。
# query:設(shè)置為 "popularity",表示要搜索包含這個(gè)短語的文檔。
# fields:指定了要在其中執(zhí)行查詢的字段列表,這里是 "title" 和 "content" 字段。
# function_score:允許您通過將查詢結(jié)果重新評(píng)分來自定義和影響每個(gè)文檔的得分。
# field_value_factor:基于字段的具體值來影響文檔的得分。
# field:指定了作為因子的字段,這里是 "votes" 字段。
POST /blogs/_search
{"query": {"function_score": {"query": {"multi_match": {"query": "popularity","fields": [ "title", "content" ]}},"field_value_factor": {"field": "votes"}}}
}POST /blogs/_search
{"query": {"function_score": {"query": {"multi_match": {"query": "popularity","fields": [ "title", "content" ]}},"field_value_factor": {"field": "votes","modifier": "log1p"}}}
}# function_score: 允許您根據(jù)不同的因素自定義和調(diào)整文檔的得分。
# field_value_factor: 基于字段的值來影響文檔的得分。
# field: 指定了作為權(quán)重因子的字段,這里是 "votes" 字段。
# modifier: 使用 "log1p" 函數(shù),對(duì)字段的值應(yīng)用 log(1 + value) 函數(shù)來調(diào)整得分。這種調(diào)整通常用于處理大量的小值,以平衡分?jǐn)?shù)的影響。
POST /blogs/_search
{"query": {"function_score": {"query": {"multi_match": {"query": "popularity","fields": [ "title", "content" ]}},"field_value_factor": {"field": "votes","modifier": "log1p" ,"factor": 0.1}}}
}# function_score: 允許您根據(jù)不同的因素自定義和調(diào)整文檔的得分。
# field_value_factor: 基于字段的值來影響文檔的得分。
# field: 指定了作為權(quán)重因子的字段,這里是 "votes" 字段。
# modifier: 使用 "log1p" 函數(shù),對(duì)字段的值應(yīng)用 log(1 + value) 函數(shù)來調(diào)整得分。這種調(diào)整通常用于處理大量的小值,以平衡分?jǐn)?shù)的影響。
# factor: 設(shè)置了一個(gè)乘法因子為 0.1,用于進(jìn)一步調(diào)整字段值對(duì)得分的影響力。
# boost_mode: 設(shè)置為 "sum",表示將所有子查詢的分?jǐn)?shù)相加以計(jì)算最終得分。
# max_boost: 設(shè)置了最大提升值為 3,即最終得分不會(huì)超過 3 倍。
# 換句話說,這個(gè)查詢的目的是:
# 在 "title" 和 "content" 字段中搜索包含短語 "popularity" 的文檔。
# 根據(jù)文檔中 "votes" 字段的值,并對(duì)其應(yīng)用log1p函數(shù),使用乘法因子 0.1 進(jìn)一步調(diào)整每個(gè)文檔的得分。
# 最終得分由子查詢得分和基于 "votes" 字段的加權(quán)因素相加,但不會(huì)超過 3。
POST /blogs/_search
{"query": {"function_score": {"query": {"multi_match": {"query": "popularity","fields": [ "title", "content" ]}},"field_value_factor": {"field": "votes","modifier": "log1p" ,"factor": 0.1},"boost_mode": "sum","max_boost": 3}}
}# random_score: 通過指定種子值 911119 來生成隨機(jī)分?jǐn)?shù),影響每個(gè)文檔的得分
# 使?場景:?站的?告需要提?展現(xiàn)率
# 具體需求:讓每個(gè)?戶能看到不同的隨機(jī)排名,但是也希望同?個(gè)?戶訪問時(shí),結(jié)果的相對(duì)順序,保持?致(Consistently Random)
POST /blogs/_search
{"query": {"function_score": {"random_score": {"seed": 911119}}}
}