es搜索排序不正确
沿用该文章里的数据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搜索排序不正确的更多相关文章
- ES搜索排序,文档相关度评分介绍——Vector Space Model
Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...
- 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 ...
- ES搜索排序,文档相关度评分介绍——Field-length norm
Field-length norm How long is the field? The shorter the field, the higher the weight. If a term app ...
- YII关联字段并带搜索排序功能
1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...
- 搜索实时个性化模型——基于FTRL和个性化推荐的搜索排序优化
本文来自网易云社区 作者:穆学锋 简介:传统的搜索个性化做法是定义个性化的标签,将用户和商品通过个性化标签关联起来,在搜索时进行匹配.传统做法的用户特征基本是离线计算获得,不够实时:个性化标签虽然具有 ...
- 【python】Leetcode每日一题-搜索排序数组2
[python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...
- 从零搭建 ES 搜索服务(六)相关性排序优化
一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关 ...
- es定制排序搜索结果
GET /company/employee/_search { "query": { "constant_score": { "filter" ...
- ES 搜索结果expalain 可以类似数据库性能调优来看排序算法的选择
When we run a simple term query with explain set to true (see Understanding the Score), you will see ...
随机推荐
- 数据挖掘算法——K-means算法
k-means中文称为K均值聚类算法,在1967年就被提出 所谓聚类就是将物理或者抽象对象的集合分组成为由类似的对象组成的多个簇的过程 聚类生成的组成为簇 簇内部任意两个对象之间具有较高的相似度,不 ...
- Rational Rose 2007破解版
首先下载好软件,链接在这里 链接:https://pan.baidu.com/s/1op-W-ZX1tqefHffs3m-r0A 提取码:0jwm 这里面包含了Rational Rose 2007版的 ...
- 如何查看子线程中的GC Alloc
1)如何查看子线程中的GC Alloc2)Build时,提示安卓NDK异常3)如何获得ParticleSystem产生的三角形数量4)关于图片通道的问题5)GPUSkinning导致模型动画不平滑 M ...
- LeetCode--179场周赛题解
水题: class Solution { public: string generateTheString(int n) { string s; string a="a",b=&q ...
- 【Deep Learning读书笔记】深度学习中的概率论
本文首发自公众号:RAIS,期待你的关注. 前言 本系列文章为 <Deep Learning> 读书笔记,可以参看原书一起阅读,效果更佳. 概率论 机器学习中,往往需要大量处理不确定量,或 ...
- select_related prefetch_related
# select_related与prefetch_related# # select_related帮你直接连表操作 查询数据 括号内只能放外键字段# # res = models.Book.obj ...
- JavaScript----DOM和事件的简单学习
##DOM简单学习 * 功能:控制html文档的内容 * 代码:获取页面标签(元素)对象:Element * document.getElementById("id值"):通 ...
- 动态规划-Minimum Distance to Type a Word Using Two Fingers
2020-01-12 18:28:13 问题描述: 问题求解: 本题还是非常困难的,至少我在看到这个题目的时候是没有想到怎么解决的.我当时联想到的题目是那条grid走两遍的题目,那条题目也很麻烦,使用 ...
- [JVM教程与调优] JVM都有哪些参数类型?
JDK本身是提供了一些监控工具,有一些是命令行,也有图形界面.本次介绍命令行如何进行监控. 命令行是非常重要的,因为在我们生产环境基本上是没有图形界面的,完全是通过命令行. 主要内容: JVM的参数类 ...
- Building Applications with Force.com and VisualForce(Dev401)(十三):Implementing Business Processes:Automating Business Processes Part II
ev401-014:Implementing Business Processes:Automating Business Processes Part II Module Agenda1.Multi ...