ElasticSearch评分机制

本文探讨了ElasticSearch的评分机制,特别是在搜索张三等常见名字时,为何会出现张某三与张三混排的问题。默认使用的是tf/idf算法,其中词频和逆文档频率决定了相关性。由于分布式特性,计算全局idf代价高,可能导致局部idf差异,影响搜索结果的相关性。文章提到了两种解决方案,包括一索引一分片和使用dfs_query_then_fetch参数,但都有其局限性。
摘要由CSDN通过智能技术生成

最近在业务开发的过程中,需要使用到ElasticSearch搜索引擎来优化我们的小搜索(其实也算不上),我们需要根据关键字搜索出匹配的人员信息和节点信息,我们当时业务的数据量大概在200MB左右,一开始其实完全使用数据库完成这个搜索,但是随着用户量的增大(大概后期一百万左右),使用数据库完成搜索的速度之慢令人发指,大概5s左右(主要业务场景中还需要较多的表连接,导致速度变慢),所以后来我们打算采用ElasticSearch完成对搜索框的优化。

在使用ElasticSearch过程中,比如我们需要搜索叫张三的人,但200MB的数据中可能含有十几个张三,几百个张某三,照理说我指定返回评分最高的20条记录中,应该先是十几条张三,然后再是剩下的张某三,但是实际结果却是张某三和张三穿插其中,这和我们想要达到的效果就有些差异了,通过研究ElasticSearch的评分机制,才明白了问题所在。

首先我们先了解下ElasticSearch的评分机制:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值