Elasticsearch高级搜索技术-自定义评分规则

目录

自定义评分规则

脚本得分 (Script Score)

函数得分 (Function Score)

示例详解

使用函数得分

原理详解

高斯衰减函数

得分模式 (Score Mode)

增强模式 (Boost Mode)

其他函数类型


自定义评分规则

脚本得分 (Script Score)

脚本得分允许你使用自定义的脚本来计算每个文档的得分。你可以编写一个 Painless 脚本(Elasticsearch 的默认脚本语言),根据文档中的字段值或其他条件来调整得分。

函数得分 (Function Score)

函数得分则提供了一种更结构化的方式来调整得分。它支持多种内置函数,如权重、衰减函数(高斯、线性、指数)、随机函数等。通过组合这些函数,可以实现复杂的评分逻辑。

示例详解

假设有一个图书库索引 library,其中包含书籍的信息,包括标题 (title) 和发布日期 (publish_date)。我们希望为那些发布日期较新的书籍增加权重。

使用函数得分
javascript 复制代码
GET /library/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "title": "love"
        }
      },
      "functions": [
        {
          "gauss": {
            "publish_date": {
              "origin": "now",
              "scale": "30d",
              "offset": "7d",
              "decay": 0.5
            }
          }
        }
      ],
      "score_mode": "multiply",
      "boost_mode": "replace"
    }
  }
}

在这个例子中:

  • 查询部分 :使用 match 查询查找标题中包含"love"的书籍。
  • 函数部分 :使用 gauss 衰减函数来调整得分。
    • origin:衰减的中心点,这里设置为当前时间 now。
    • scale:控制衰减的速度,这里是 30 天。
    • offset:将衰减曲线向后移动 7 天。
    • decay:当距离达到 scale 时,得分会衰减到初始值的 0.5 倍。
  • score_mode :多个函数得分的合并方式,这里设置为 multiply,即将各个函数得分相乘。
  • boost_mode :最终得分的处理方式,replace 表示用函数得分替换原始相关性得分。

原理详解

高斯衰减函数

高斯衰减函数是一种常用的平滑衰减方法。

得分模式 (Score Mode)
  • multiply:将所有函数得分与原始相关性得分相乘。
  • sum:将所有函数得分与原始相关性得分相加。
  • avg:取所有函数得分的平均值。
  • first:只使用第一个函数得分。
  • max:取所有函数得分的最大值。
  • min:取所有函数得分的最小值。
增强模式 (Boost Mode)
  • multiply:将函数得分与原始相关性得分相乘。
  • replace:用函数得分替换原始相关性得分。
  • sum:将函数得分与原始相关性得分相加。
  • avg:取函数得分与原始相关性得分的平均值。
  • max:取函数得分与原始相关性得分的最大值。
  • min:取函数得分与原始相关性得分的最小值。

其他函数类型

除了高斯衰减函数外,还有其他几种常见的函数类型:

  • 线性衰减 (Linear Decay):基于线性函数进行衰减。
  • 指数衰减 (Exponential Decay):基于指数函数进行衰减。
  • 权重 (Weight):为每个文档分配固定的权重。
  • 随机 (Random):为每个文档分配一个随机得分。
  • 脚本 (Script):使用自定义脚本来计算得分。
相关推荐
Flynn Liang15 小时前
内存/Redis/PGVector/Milvus/ES 怎么选?Spring AI VectorStore 抽象与向量库选型对照表
redis·elasticsearch·milvus·rag·springai·pgvector·向量库
Elastic 中国社区官方博客1 天前
基于 Jina OCR v1 与 Elasticsearch 的 PDF 智能混合检索与 RAG 系统实战指南
大数据·数据库·elasticsearch·搜索引擎·ocr·jina
Eloudy1 天前
Qwen2.5-14B-Instruct-AWQ 模型文件结构分析
大数据·elasticsearch·搜索引擎
YIN_尹2 天前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Elastic 中国社区官方博客2 天前
Elastic 在《Forrester Wave™:2026 年第四季度智能运维平台》报告中被评为强劲表现者
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
Elasticsearch2 天前
Elastic Cloud 无服务器服务审计日志:将审计记录发送到可观测性或安全解决方案
elasticsearch
zwjapple3 天前
skill总结
大数据·elasticsearch·搜索引擎
阿里云大数据AI技术3 天前
云栖实录|从代码上下文到千亿级文档:Qoder × 阿里云 Elasticsearch 落地生产级Agent向量检索
人工智能·elasticsearch
Elastic 中国社区官方博客3 天前
使用 OpenTelemetry 在 Elastic 中实现 Claude 平台的人工智能 agent 可观测性
大数据·运维·服务器·人工智能·elasticsearch·信息可视化·全文检索
Elastic 中国社区官方博客4 天前
Elastic 重大事件功能如何将 100 条日志样本转化为检测规则
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎