好多词网站,甜点的网站建设规划书,百度号码认证平台官网首页,百度拍照搜索这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost#xff1a;在索引层面修改相关性2、boosting#xff1a;修改文档相关性3、negative_boost#xff1a;降低相关性4、function_score#xff1a;自定义评分5、… 这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost在索引层面修改相关性2、boosting修改文档相关性3、negative_boost降低相关性4、function_score自定义评分5、rescore_query查询后二次打分 四、多字段搜索场景优化1、最佳字段Best Fields: 多个字段中返回评分最高的2、多数字段Most Fields匹配多个字段返回各个字段评分之和3、混合字段Cross Fields跨字段匹配待查询内容在多个字段中都显示 一、相关性的概述
在搜索引擎中描述一个文档与查询语句匹配程度的度量标准。
二、自定义评分策略
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跨字段匹配待查询内容在多个字段中都显示
对于某些实体例如人名地址图书信息。需要在多个字段中确定信息单个字段只能作为整体的一部分。希望在任何这些列出的字段中找到尽可能多的词。