自定义打分函数
自定义打分函数允许用户根据业务逻辑动态调整文档的相关性评分,超越默认算法,实现个性化排序。
1. 使用 Function Score 查询
function_score 查询结合原始查询结果与自定义函数,实现复杂评分策略。
示例:基于字段值加权
GET /my-index/_search
{
"query": {
"function_score": {
"query": {
"match": {
"content": "Elasticsearch 教程"
}
},
"field_value_factor": {
"field": "popularity",
"factor": 1.5,
"modifier": "sqrt",
"missing": 1
},
"boost_mode": "multiply"
}
}
}
`
2. 结合脚本自定义评分
使用 Painless 脚本实现更复杂的打分逻辑。
GET /my-index/_search
{
"query": {
"function_score": {
"query": { "match_all": {} },
"script_score": {
"script": {
"source": "doc['popularity'].value * 2 + doc['sales'].value"
}
}
}
}
}
3. 其他常用函数类型
random_score:随机打分,用于打乱结果顺序decay functions:基于距离的权重衰减函数(如高斯衰减)weight:直接给查询加权重
4. 调优建议
- 根据业务需求设计评分函数,避免复杂脚本影响性能
- 使用缓存脚本提高效率
- 结合过滤器减少评分计算范围
自定义打分函数增强了搜索排序的灵活性,支持构建更精准的推荐和搜索体验。
相关内容
- 定义与用途 本章介绍 Elasticsearch 的定义、核心功能与适用场景,帮助读者理解它为何成为现代搜索与日志分析的首选解决方案。
- 使用场景 本章总结 Elasticsearch 在全文搜索、日志分析、监控告警、推荐系统等领域的典型应用场景,助力理解其强大用途。
- 核心概念简介 本章概览 Elasticsearch 的核心构成,包括索引、文档、映射、节点、集群等关键概念,为后续使用和架构设计打下基础。
- 本地安装 本章介绍如何在本地环境中安装 Elasticsearch,适配 Windows、macOS 和 Linux 系统,便于开发测试与入门学习。
- Docker 安装 本章讲解如何通过 Docker 安装和运行 Elasticsearch,适合开发者快速搭建测试环境并集成至容器化工作流中。
- 与 Kibana 一起部署 本章介绍如何将 Elasticsearch 与 Kibana 一起部署,使用 Docker Compose 快速构建可视化分析平台,适合开发与测试环境使用。