当前位置: 首页 > news >正文

13-综合排序:Function Score Query 优化算分

使用了 function_score 查询来根据某个字段的值对查询结果进行打分。以下是该查询的主要部分:

query: 包含了实际执行搜索的部分,在这里包括一个 multi_match 查询。

multi_match:用于在多个字段上执行相同的查询。

query:设置为 "popularity",表示要搜索包含这个短语的文档。

fields:指定了要在其中执行查询的字段列表,这里是 "title" 和 "content" 字段。

function_score:允许您通过将查询结果重新评分来自定义和影响每个文档的得分。

field_value_factor:基于字段的具体值来影响文档的得分。

field:指定了作为因子的字段,这里是 "votes" 字段。

modifier: 使用 "log1p" 函数,对字段的值应用 log(1 + value) 函数来调整得分。这种调整通常用于处理大量的小值,以平衡分数的影响。

factor: 设置了一个乘法因子为 0.1,用于进一步调整字段值对得分的影响力。

boost_mode: 设置为 "sum",表示将所有子查询的分数相加以计算最终得分。

max_boost: 设置了最大提升值为 3,即最终得分不会超过 3 倍。

换句话说,这个查询的目的是:

在 "title" 和 "content" 字段中搜索包含短语 "popularity" 的文档。

根据文档中 "votes" 字段的值,并对其应用log1p函数,使用乘法因子 0.1 进一步调整每个文档的得分。

最终得分由子查询得分和基于 "votes" 字段的加权因素相加,但不会超过 3。

random_score: 通过指定种子值 XXXX 来生成随机分数,影响每个文档的得分


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 查询来根据某个字段的值对查询结果进行打分。以下是该查询的主要部分:
# query: 包含了实际执行搜索的部分,在这里包括一个 multi_match 查询。
# multi_match:用于在多个字段上执行相同的查询。
# query:设置为 "popularity",表示要搜索包含这个短语的文档。
# fields:指定了要在其中执行查询的字段列表,这里是 "title" 和 "content" 字段。
# function_score:允许您通过将查询结果重新评分来自定义和影响每个文档的得分。
# 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: 允许您根据不同的因素自定义和调整文档的得分。
# field_value_factor: 基于字段的值来影响文档的得分。
# field: 指定了作为权重因子的字段,这里是 "votes" 字段。
# modifier: 使用 "log1p" 函数,对字段的值应用 log(1 + value) 函数来调整得分。这种调整通常用于处理大量的小值,以平衡分数的影响。
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: 允许您根据不同的因素自定义和调整文档的得分。
# field_value_factor: 基于字段的值来影响文档的得分。
# field: 指定了作为权重因子的字段,这里是 "votes" 字段。
# modifier: 使用 "log1p" 函数,对字段的值应用 log(1 + value) 函数来调整得分。这种调整通常用于处理大量的小值,以平衡分数的影响。
# factor: 设置了一个乘法因子为 0.1,用于进一步调整字段值对得分的影响力。
# boost_mode: 设置为 "sum",表示将所有子查询的分数相加以计算最终得分。
# max_boost: 设置了最大提升值为 3,即最终得分不会超过 3 倍。
# 换句话说,这个查询的目的是:
# 在 "title" 和 "content" 字段中搜索包含短语 "popularity" 的文档。
# 根据文档中 "votes" 字段的值,并对其应用log1p函数,使用乘法因子 0.1 进一步调整每个文档的得分。
# 最终得分由子查询得分和基于 "votes" 字段的加权因素相加,但不会超过 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 来生成随机分数,影响每个文档的得分
# 使⽤场景:⽹站的⼴告需要提⾼展现率
# 具体需求:让每个⽤户能看到不同的随机排名,但是也希望同⼀个⽤户访问时,结果的相对顺序,保持⼀致(Consistently Random)
POST /blogs/_search
{"query": {"function_score": {"random_score": {"seed": 911119}}}
}

http://www.lryc.cn/news/478264.html

相关文章:

  • 鸿蒙应用App测试-专项测试(DevEco Testing)
  • RabbitMQ设置消息过期时间
  • 大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优
  • 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测
  • 排序算法简介
  • (没有跳过联网激活)导致使用微软账号激活电脑---修改为本地账户和英文名字
  • [论文粗读][REALM: Retrieval-Augmented Language Model Pre-Training
  • flink 内存配置(五):网络缓存调优
  • set和map的使用
  • LCL三相并网逆变器simulink仿真+说明文档
  • 从0开始深度学习(24)——填充和步幅
  • CPU Study - Instructions Fetch
  • GJ Round (2024.9) Round 1~7
  • 【CMCL】多模态情感识别的跨模态对比学习
  • 输入/输出系统
  • asp.net+uniapp养老助餐管理系统 微信小程序
  • 部署istio应用未能产生Envoy sidecar代理
  • 使用YOLO 模型进行线程安全推理
  • ABAP 增强
  • vue使用方法创建组件
  • HTML 基础标签——链接标签 <a> 和 <iframe>
  • @SpringBootApplication源码解析
  • 【实战篇】requests库 - 有道云翻译爬虫 【附:代理IP的使用】
  • 法语动词变位
  • Excel:vba实现批量插入图片
  • Vue3的router和Vuex的学习笔记整理
  • 设置JAVA以适配华为2288HV2服务器的KVM控制台
  • 掌握Qt调试技术
  • 使用NVM自由切换nodejs版本
  • 同三维T610UHK USB单路4K60采集卡