如果一个Index有多个shard的话,那么搜索的结果可能不太准确。

比如我们在某一个shard中,有很多个document,假设有20个文档的record.desc中包含Premium,当搜索Premium的请求到达这个shard的时候,会利用TF/IDF计算相关度算法:

TF: Term Frequency的缩写,表示该term在当前document出现的频率

IDF: Inverse Document Frequency缩写,表示该term在所有文档中出现的频率

所以根据这个公式我们可以得出一个结论:

如果该term在当前文档出现次数越高,那么分值越大;如果该term在所有文档出现的频率越小,那么分值越大

但是在ElasticSearch中,他计算IDF只是在local shard上计算,不会计算其他的shard上的词频,所以这样就会导致每一个shard上计算掉结果不一样。

该如何解决呢?

# 生产环境下,数据量大,尽可能实现均匀分配

# 测试环境下,将索引的primary shard设置为1个,number_of_shards=1,index settings

# 测试环境下,搜索附带search_type=dfs_query_then_fetch参数,会将local IDF取出来计算global IDF。

计算一个doc的相关度分数的时候,就会将所有shard对的local IDF计算一下,获取出来,在本地进行global IDF分数的计算,会将所有shard的doc作为上下文来进行计算,也能确保准确性

但是生产不建议打开,因为性能很差。

ElasticSearch多shard场景相关度打分不准确问题相关推荐

  1. Elasticsearch的功能,Elasticsearch的适用场景,Elasticsearch的特点(来自学习资料)

    1.Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索 数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些;新闻网站,最 ...

  2. 弘辽科技:拼多多多多场景推广的收藏准确吗只有收藏没有成交咋办

    说到拼多多推广,就不得不说一说拼多多的场景推广,这是一种比较受欢迎的推广方式,可以帮助卖家找到对自己的产品有需求的人群. 不知道这种推广模式下的收藏是否准确呢? 一.场景推广的收藏准确吗? 一般来说, ...

  3. Elasticsearch教程应用场景

    Elasticsearch使用 1.搜索使用 1.1搜索请求的结构体 现在我们已经看到了一些基本知识,让我们尝试一下更加真实的数据集(结构化数据).我准备了关于金庸先生的小 说的JSON文档样本.每个 ...

  4. ElasticSearch | 01 使用场景和概要介绍

    序言 前言 谁应该读这本书 为什么我们要写这本书 Elasticsearch 版本 如何读这本书 本书导航 在线资源 本书协议约定 使用代码示例 鸣谢 Elasticsearch 权威指南 https ...

  5. Elasticsearch:shard 分配感知

    你可以将自定义节点属性用作感知属性,以使 Elasticsearch 在分配分片时考虑物理硬件配置. 如果 Elasticsearch 知道哪些节点在同一台物理服务器上,在同一机架中或在同一区域中,则 ...

  6. Elasticsearch 的 Shard 和 Segment

    Shard(分片)       一个Shard就是一个Lucene实例,是一个完整的搜索引擎.一个索引可以只包含一个Shard,只是一般情况下会用多个分片,可以拆分索引到不同的节点上,分担索引压力. ...

  7. Elasticsearch 模块-Shard Allocation 机制

    1. 背景 前提概要 本文主要以 5. 阅读来源 中的文章为依据, 结合 Elasticsearch 7.4.0 版本的官方文档, 对分片分配机制这一部分的理论进行整理, 望不吝赐教~ shard a ...

  8. ElasticSearch(一)ElasticSearch的应用场景及为什么要选择ElasticSearch?

    先了解一下数据的分类 结构化数据 又可以称之为行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据.其实就是可以能够用数据或者统一的结构加以表示的数据.比如在数据表存储商品的库存,可以用整型表 ...

  9. ElasticSearch painless脚本实现自定义打分排序

    背景: 遇到了这样一个需求,对于历史购买的商品优先排序 自定义打分排序规则 自定义打分规则,其实就是可以根据打分规则进行排序.注意:只能对索引的keyword属性进行排序,TEXT类型的要加.keyW ...

最新文章

  1. 【IP地址の乾坤大挪移】C语言实现“IP地址/数字”互转
  2. xp系统本地服务器环境配置,Windows XP安装Apache环境图文详解Windows服务器操作系统 -电脑资料...
  3. 封属于旋转轴密封件吗_氧化铝95瓷属于普通型的一种吗?
  4. 管理系统界面设计python_python图形化界面设计(wxpython)一布局管理
  5. MySQL分组函数和distinct搭配使用
  6. Windows下Anaconda3安装及使用教程
  7. 360极速浏览器 保存的密码 查看
  8. Xcode常用技巧(1)-使用Xcode进行代码分析及GDB调试
  9. 为什么自建深度学习机器?因为比AWS便宜10倍啊!
  10. C++ 一个简单的log类的实现
  11. HTML恶搞代码 无限弹窗(超简短)
  12. Java、JSP公文流转系统分析与实现
  13. 光纤猫可做无线打印服务器吗,光猫自带的天线,这些天线都有什么用呢?是无线功能吗?...
  14. python爬虫登录正方教务管理系统获取成绩数据_「武汉理工大学教务处管理系统」Python爬虫初学(4)登陆武汉理工大学教务处并转到成绩管理 - seo实验室...
  15. Android 高效安全加载图片
  16. MySQL基础篇(上)
  17. 别混淆你想要什么和能否实现
  18. matlab中给信号添加高斯白噪声的两种方法,awgn计算过程,randn函数
  19. 安徽航信研发项目管理体系探索与实践
  20. what-is-downasaur

热门文章

  1. android删除电池功能,Android教程:删除电池信息增加待机时间
  2. 分布式链路追踪 之 Skywalking 设计理念核心原理
  3. docker(应用容器引擎)
  4. java利用循环打印AVA,JAVA语言-AVA文件流
  5. 10突然只剩下c盘和d盘了_科普:为什么软件不能装C盘?会卡!这是真的吗?
  6. 毕马威_【毕马威快讯】毕马威发布个人信息保护法(草案)概览
  7. 学习easyui疑惑(四)
  8. mysql 一行取最大值_mysql 分组取最大值的同时获取包含最大值的行的其他字段
  9. java 监听多个按键_如何在所有组件中监听按键(在Java Swing中)?
  10. MySQL 表分区 Partition