需要关键字填充帮助。
场景:我有2个演示,标题如下:
示例1:演示1:"烤蛋糕烤蛋糕蛋糕蛋糕烤"演示#2:"Bake Cake"现在,当我使用文本"Bake Cake"搜索时,结果必须返回最合适的匹配项,即演示文稿#2应该列在顶部/第一个。
示例2:演示1:"烤蛋糕烤蛋糕蛋糕蛋糕烤"演示#2:"烤蛋糕"演示#3:"bake A cake"现在,当我使用文本"Bake cake"进行搜索时,返回的结果必须是最合适的匹配项,即演示文稿#2应该列在顶部/第一个,然后是演示文稿#3,最后应该是演示文稿#1。
区分大小写无关紧要。
1条答案
按热度按时间tpgth1q71#
首先,我将解释“Elasticsearch如何计算分数”,然后我将分享您的具体情况下的解决方案。
ElasticSearch如何计算分数
Elasticsearch使用一种名为TF-IDF(词频-逆文档频率)的评分算法来计算与查询匹配的文档的相关性得分。
TF(术语频率)是衡量一个术语在文档中出现的频率。一个术语在文档中出现的频率越高,该术语在文档中的TF得分就越高。
IDF(反向文档频率)是衡量某个术语在集合中的所有文档中的罕见程度。术语越罕见,其IDF分数就越高。
当Elasticsearch计算文档与查询的相关性分数时,它会同时考虑文档中查询词的TF分数以及所有文档中查询词的IDF分数。最终分数是TF和IDF分数的组合,通常表示为TF-IDF。
此外,Elasticsearch有一些功能,如字段长度规范,这可以提高较短字段的得分和一些其他功能,如查询规范,这规范化的基础上查询的数量得分.
还可以通过为查询提供自定义脚本来自定义评分算法,这在尝试匹配您的用例时允许更大的灵活性。
适用于您的案例的解决方案:案例1:按asc顺序排序可以解决问题。案例2:使用stop token filter删除停止词。以下是停止词
下面是一个例子:
#索引前创建分析器
#为数据建立索引
#搜索数据
输出将如你所愿。演示#2,#3和#1,如屏幕截图。x1c 0d1x