Elasticsearch:搜索相关性

这里写目录标题

一、相关性的概述

在搜索引擎中,描述一个文档与查询语句匹配程度的度量标准。

二、自定义评分策略

Elasticsearch5之前的版本,评分机制或者打分模型是基于TF-IDF实现的。从Elasticsearch5之后,默认的打分机制改成了Okapi BM25。

1、TF-IDF算法

  • TF是词频:检索词在文档中出现的频率越高,相关性也越高。
  • IDF是逆向文本频率:每个检索词在索引中出现的频率,频率越高,相关性越低。
  • 字段长度归一值:检索词出现在一个内容短的title要比同样的词出现在一个内容长的content字段权重更大。

2、BM25算法

和经典的TF-IDF相比,当TF无限增加时,BM25算分会趋于一个数值。

三、自定义评分策略

1、Index Boost:在索引层面修改相关性

Index Boost这种方式能在跨多个索引搜索时为每个索引配置不同的级别。所以它适用于索引级别调整评分。

实战举例:一批数据里有不同的标签,数据结构一致,要将不同的标签存储到不同的索引(A、B、C),并严格按照标签来分类展示(先展示A类,然后展示B类,最后展示C类),应该用什么方式查询呢?

具体实现:借助indices_boost提升索引的权重,让A排在最前,其次是B,最后是C。

2、boosting:修改文档相关性

boosting可在查询时修改文档的相关度。boosting值所在的范围不同,含义也不同。

  • 若boosting值为0~1,如0.2,代表降低评分。
  • 若boosting值>1,如1.5,则代表提升评分。
    适用于某些特定的查询场景,用户可以自定义修改满足某个查询条件的结果评分。

3、negative_boost:降低相关性

若对某些返回结果不满意,但又不想将其排除(must_not),则可以考虑采用negative_boost的方式。

原理如下:

  • negative_boost仅对查询中定义为negative的部分生效。
  • 计算评分时,不修改boosting部分评分,而negative部分的评分则乘以negative_boost的值。
  • negative_boost取值为0~1.0。

4、function_score:自定义评分

该方式支持用户自定义一个或多个查询语句及脚本,达到精细化控制评分的目的,以对搜索结果进行高度个性化的排序设置。适用于需进行复杂查询的自定义评分业务场景。

5、rescore_query:查询后二次打分

二次评分是指重新计算查询所返回的结果文档中指定文档的得分。Elasticsearch会截取查询返回前N条结果,并使用预定义的二次评分方式来重新计算其得分。但对全部有序的结果集进行重新排序的话,开销势必很大,使用rescore_query可以只对结果的子集进行处理。该方式适用于对查询语句的结果不满意,需要重新打分的场景。

四、多字段搜索场景优化

1、最佳字段(Best Fields): 多个字段中返回评分最高的

当字段之间相互竞争,又相互关联。例如:对于博客的title和body这样的字段,评分来自最匹配字段。

2、多数字段(Most Fields):匹配多个字段,返回各个字段评分之和

处理英文内容时的一种常见的手段是,在主字段(English Analyzer),抽取词干,加入同义词,以匹配更多的文档。相同的文本,加入字段(standard Analyzer),以提供更加精确的匹配。其他字段作为匹配文档提高相关度的信号,匹配字段越多则越好。

3、混合字段(Cross Fields):跨字段匹配,待查询内容在多个字段中都显示

对于某些实体,例如人名,地址,图书信息。需要在多个字段中确定信息,单个字段只能作为整体的一部分。希望在任何这些列出的字段中找到尽可能多的词。

相关推荐
Lx35221 分钟前
Hadoop数据处理模式:批处理与流处理结合技巧
大数据·hadoop
城管不管32 分钟前
搭建分片集群
大数据·数据库
刘一说44 分钟前
Elasticsearch启动失败?5步修复权限问题
大数据·elasticsearch·jenkins
刘一说1 小时前
Elasticsearch安装启动常见问题全解析
大数据·elasticsearch·jenkins
一水鉴天2 小时前
整体设计 之 绪 思维导图引擎 之 引 认知系统 之8 之 序 认知元架构 之4 统筹:范畴/分类/目录/条目 之2 (豆包助手 之6)
大数据·架构·认知科学
计算机编程-吉哥3 小时前
大数据毕业设计-基于大数据的健康饮食推荐数据分析与可视化系统(高分计算机毕业设计选题·定制开发·真正大数据)
大数据·毕业设计·计算机毕业设计选题·机器学习毕业设计·大数据毕业设计·大数据毕业设计选题推荐·大数据毕设项目
Elasticsearch4 小时前
带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
elasticsearch
用户7415517014774 小时前
基础语法和数据类型
大数据
武子康4 小时前
大数据-94 Spark核心三剑客:RDD、DataFrame、Dataset与SparkSession全面解析
大数据·后端·spark
一个儒雅随和的男子4 小时前
Dockerfile构建容器需要注意的事项。
大数据·elasticsearch·搜索引擎