沿用该文章里的数据https://www.cnblogs.com/MRLL/p/12691763.html

查询时发现,一模一样的name,但是相关度不一样

GET /z_test/doc/_search
{
"explain": false,
"query": {
"match_phrase": {
"name": "测试"
}
}
}

结果

{
"took" : ,
"timed_out" : false,
"_shards" : {
"total" : ,
"successful" : ,
"skipped" : ,
"failed" :
},
"hits" : {
"total" : ,
"max_score" : 0.5753642,
"hits" : [
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "D4eQcnEBf_xjEc-wO9P0",
"_score" : 0.5753642,
"_source" : {
"name" : "测试123"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "2oeLcnEBf_xjEc-wFNK2",
"_score" : 0.5753642,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "_analyze",
"_score" : 0.45840853,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "qHeKcnEBvg5mZsCPxwX1",
"_score" : 0.3672113,
"_source" : {
"name" : "测试"
}
},
{
"_index" : "z_test",
"_type" : "doc",
"_id" : "AVSTcnEBjEFwhOIJHS0S",
"_score" : 0.33573607,
"_source" : {
"name" : "测试1"
}
}
]
}
}

查询文档后得知,在相关度分值的计算中有个属性为逆向文档频率,意思为该搜索字段在整个索引的文档里出现的频率,出现的越多所占分值权重越低

参照该文章https://blog.csdn.net/paditang/article/details/79098830

解决办法为用以下查询

GET /z_test/doc/_search?search_type=dfs_query_then_fetch
{
"explain": false,
"query": {
"match": {
"name": {"query": "测试"}
}
}
}
dfs_query_then_fetch意为使用全局的文档信息打分

默认查询参数为query then fetch
  • 发送查询到每个shard
  • 找到所有匹配的文档,并使用本地的Term/Document Frequency信息进行打分
  • 对结果构建一个优先队列(排序,标页等)
  • 返回关于结果的元数据到请求节点注意,实际文档还没有发送,只是分数
  • 来自所有shard的分数合并起来,并在请求节点上进行排序,文档被按照查询要求进行选择
  • 最终,实际文档从他们各自所在的独立的shard上检索出来
  • 结果被返回给用户
dfs_query_then_fetch
  • 预查询每个shard,询问Term和Document frequency
  • 发送查询到每隔shard
  • 找到所有匹配的文档,并使用全局的Term/Document Frequency信息进行打分
  • 对结果构建一个优先队列(排序,标页等)
  • 返回关于结果的元数据到请求节点注意,实际文档还没有发送,只是分数
  • 来自所有shard的分数合并起来,并在请求节点上进行排序,文档被按照查询要求进行选择
  • 最终,实际文档从他们各自所在的独立的shard上检索出来
  • 结果被返回给用户
延伸:
 
 
词频:查询字段出现的越多分数越高,如果不在意词在某个字段中出现的频次,而只在意是否出现过,则可以在字段映射中禁用词频统计:
PUT /my_index
{
"mappings": {
"doc": {
"properties": {
"name": {
"type": "string",
"index_options": "docs"
}
}
}
}
}
 

es搜索排序不正确的更多相关文章

  1. ES搜索排序,文档相关度评分介绍——Vector Space Model

    Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...

  2. ES搜索排序,文档相关度评分介绍——TF-IDF—term frequency, inverse document frequency, and field-length norm—are calculated and stored at index time.

    Theory Behind Relevance Scoring Lucene (and thus Elasticsearch) uses the Boolean model to find match ...

  3. ES搜索排序,文档相关度评分介绍——Field-length norm

    Field-length norm How long is the field? The shorter the field, the higher the weight. If a term app ...

  4. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  5. 搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化

    本文来自网易云社区 作者:穆学锋 简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配.传统做法的用户特征基本是离线计算获得,不够实时:个性化标签虽然具有 ...

  6. 【python】Leetcode每日一题-搜索排序数组2

    [python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...

  7. 从零搭建 ES 搜索服务(六)相关性排序优化

    一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关 ...

  8. es定制排序搜索结果

    GET /company/employee/_search { "query": { "constant_score": { "filter" ...

  9. ES 搜索结果expalain 可以类似数据库性能调优来看排序算法的选择

    When we run a simple term query with explain set to true (see Understanding the Score), you will see ...

随机推荐

  1. 2016 Multi-University Training Contest 4 T9

    http://acm.hdu.edu.cn/showproblem.php?pid=5772 最大权闭合子图. 得到价值w[i][j]的条件是选了i,j这两个位置的字符.选择位置的i字符花费为 第一次 ...

  2. 关于emgucv控制多摄像头问题

    看到这篇文章你或许已经查阅很多资料,也可能你刚准备深入研究,但是关于调用多摄像头问题我要说明一点,关于多摄像头调用 取决于你电脑本身USB控制器数量,不是说你电脑上5个usb就可以同时控制5台摄像头, ...

  3. EPX-Studio调用Dll模块

    procedure TForm1.BitBtn1Click(Sender: TObject); var REP : IExcelPanelXDisp; modulePath:string; begin ...

  4. [C#] 命令总线模式

    1 高内聚.低耦合 虽然已经毕业很多年了,但依然总是能记得,<软件工程>这门课的老师总是强调 "高内聚,低耦合". 这些年,在架构方面的技术发展方向,目标就是不断的拆分 ...

  5. Natas34 Writeup(闯关结束!)

    Natas34: 登录什么都不用做,闯关结束!撒花~~~

  6. Natas24 Writeup(strcmp绕过漏洞)

    Natas24: 一个登录页面,查看源码,发现关键代码: if(array_key_exists("passwd",$_REQUEST)){ if(!strcmp($_REQUES ...

  7. 物联网时代-新基建-ThingsBoard调试环境搭建

    前言 2020开年之际,科比不幸离世.疫情当道.经济受到了严重的损失.人们都不幸的感慨: 2020年真是太不真实的一年,可以重新来过就好了!国家和政府出台了拯救经济和加速建设的利好消息.3月份最热的词 ...

  8. .NET Core技术研究-HttpContext访问的正确姿势

    将ASP.NET升级到ASP.NET Core之后,相信大家都会遇到HttpContext.Current无法使用的问题.这也是我们迁移ASP.NET Core必须解决的问题. 本文我们详细讨论一下, ...

  9. 常用正则表达式(手机号、邮箱、URL地址、身份证等等)

    一.前言 不好的习惯:1.每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思: 2.一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规 ...

  10. servlet本质是什么

    作者:Javdroider Hong链接:https://www.zhihu.com/question/21416727/answer/339012081来源:知乎著作权归作者所有.商业转载请联系作者 ...