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):跨字段匹配,待查询内容在多个字段中都显示

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

相关推荐
问商十三载5 小时前
AI引擎生成式优化实践:刑事辩护律师团队IP构建
大数据·人工智能
会议咨询6 小时前
2026年大数据、信息系统与智能通信国际会议(BDIIC 2026)
大数据·信息系统·智能通信
Raas1006 小时前
MAI Gateway(魔芋企业级AI网关)能力解析:AI网关能做故障转移吗?AI网关核心功能详解
大数据·人工智能·网关·ai·gateway·mai gateway
IT研究所7 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
回眸&啤酒鸭8 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
大大大大晴天8 小时前
每天认识一个组件:Apache DolphinScheduler
大数据
yumgpkpm8 小时前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
邓工说电9 小时前
智慧断路器安全吗?数据加密、离线保护与合规认证全解读
大数据·数据库·人工智能·智能断路器·炜晔科技
出海客9 小时前
跨境电商多语言客服知识库怎么建:资料结构、检索边界与人工升级
大数据·人工智能
liliangcsdn9 小时前
派息率指标的应用探索和分析
大数据·算法