首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Elasticsearch:搜索分数难住我了。不同匹配级别的得分相同

Elasticsearch是一个开源的分布式搜索和分析引擎,它具有高性能、可扩展性和灵活性的特点。它采用了倒排索引的方式来存储和检索大规模数据,可以快速地进行全文搜索、结构化搜索、地理位置搜索等。

在Elasticsearch中,搜索结果的得分是根据不同匹配级别计算得出的。不同匹配级别的得分相同的情况可能出现在以下两种情况下:

  1. 匹配度相同:当查询条件与多个文档的某个字段完全匹配时,这些文档的得分是相同的,无论字段长度如何。这是因为Elasticsearch使用的是TF-IDF(词频-逆文档频率)算法来计算得分,只考虑了匹配的文档数量,而没有考虑匹配文档的具体内容。
  2. 自定义相似度算法:在某些情况下,用户可能会使用自定义的相似度算法来计算得分。如果自定义算法导致不同匹配级别的得分相同,那么可能需要重新评估算法的设计和实现。

对于上述情况,可以考虑以下几点解决方案:

  1. 调整相关性算法:可以根据具体需求调整Elasticsearch的相关性算法,例如修改TF-IDF算法的权重、调整查询条件的权重等,以实现不同匹配级别得分的差异化。
  2. 使用其他评分模型:Elasticsearch支持使用其他评分模型,如BM25(Best Match 25)等。可以尝试使用不同的评分模型,通过调整参数来实现不同匹配级别的得分差异。
  3. 调整数据结构:通过调整索引的字段设置,如调整分词器、改变字段类型等,来影响匹配级别的得分。不同的分词器和字段类型会影响到索引和搜索的结果。

腾讯云提供了基于Elasticsearch的托管服务,即TencentDB for Elasticsearch。它提供了高度可扩展、高可靠性的Elasticsearch集群,可以方便地部署和管理Elasticsearch环境。您可以通过以下链接了解更多关于TencentDB for Elasticsearch的信息:https://cloud.tencent.com/product/es

总结起来,对于搜索分数难住的情况,可以通过调整相关性算法、使用其他评分模型或者调整数据结构等方法来解决。同时,TencentDB for Elasticsearch是腾讯云提供的一种可靠的托管服务,可以帮助您轻松管理和部署Elasticsearch环境。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

第11篇-Elasticsearch查询方法

也就是说,需要所有来自中国但收入超过50万的员工。 这需要上述两个叶查询的组合。现在,Elasticsearch提供使用bool查询组合这些查询的工具。...} } } must:子句(查询)必须出现在匹配的文档中,并将有助于得分。 filter:子句(查询)必须出现在匹配的文档中。但是与查询分数不同的是,忽略该分数。...返回搜索结果时,会根据它们的相关性得分对它们进行排序,这表明文档与查询的匹配程度。...也就是说,“匹配”查询的得分计算可能与“跨度”查询的得分计算不同。 但最重要的是,分数计算取决于查询子句运行的上下文。也就是说,查询子句可以在“查询”上下文或“过滤器”上下文中运行。...查询上下文 在查询上下文中执行子句时,它将查找“文档与查询的匹配程度”。比赛越多,得分越高。 如下面的屏幕截图所示: 02.png 【图2】 在上面的示例中,在“标题”字段中搜索“导演”。

4K00

elasticsearch:ES评分规则详解

elasticsearch[七]:ES评分规则详解 一、需求 因为需要对搜索结果进行一个统一化的评分,因此需要仔细研究 ES 本身的评分规则从而想办法把评分统一。...尽管查询规范的目的是使不同查询的结果具有可比性,但效果并不理想。相关性_score的唯一目的是按照正确的顺序对当前查询的结果进行排序。您不应该尝试比较来自不同查询的相关性分数。...每个文档的查询规范化因子相同,无法更改。 2.coord--协调因子 用于奖励包含较高百分比查询词的文档。文档中出现的查询词越多,文档与查询匹配的可能性就越大,分数越高。...总分 = 查询得分 * 自定义得分,正常√,这样就会让符合条件的文档分数大幅提高 测试 上面查询的是一个没有特别属性的中义词,会返回令人满意的结果,下面搜索一些具有特殊省份、分类的词语,观察 function_score...四、总结 总之,score = 查询得分 (分词得分之和) 与自定义得分综合计算的结果,其中查询得分涉及比较多,不太好改,而且考虑到查询结果对不同用户的得分观感都是不一样的,不可能用匹配度之类的确切结果进行描述

1.7K10
  • 触类旁通Elasticsearch:打分

    显然词条的词频越高,得分越高;相似地,索引中词条越罕见,逆文档频率越高。调和因子考虑搜索过多少文档以及发现多少词条。查询标准化是视图让不同查询的结果具有可比性。 2....下面代码会搜索elasticsearch”和“big data”,而“elasticsearch”被boost3倍。...”没有出现在ID为4的文档的description字段中,得分为0,解释为什么这篇文档和查询没有匹配成功。..."rescore_query_weight": 1.3 # 再评分查询得分的权重 } } }' 这个例子搜索所有标题中含有“elasticsearch...如果没有特别指明,每个函数的得分是相乘的。 如果指定first,只会考虑第一个拥有匹配过滤器的函数的分数

    2K10

    《读书报告 – Elasticsearch入门 》----Part II 深入搜索(2)

    这个规则把节点级别的配置分析器方法排除在外。另外,节点级别的分析器配置方法需要改变每个节点的配置文件并且重启每个节点,这将成为维护的噩梦。...我们经常需要在一个或者多个字段中查询相同的或者不同的 查询字符串,意味着我们需要能够组合多个查询子句以及使他们的相关性得分有意义。 或许我们在寻找列夫·托尔斯泰写的一本叫《战争与和平》的书。...所有的匹配查询都是should子句,所以为什么不把翻译者的子句放在和title以及作者的同一? 答案就在如何计算得分中。...布尔查询执行每个匹配查询,把他们的得分加在一起,然后乘以匹配子句的数量,并且除以子句的总数。每个同级的子句权重是相同的。在前面的查询中,包含翻译者的布尔查询占用总得分的三分之一。...tie_breaker 然而,同时把其他匹配语句的分数考虑在内也是可行的。

    1.2K20

    你必须知道的23个最有用的Elasticseaerch检索技巧

    本文详细论述Elasticsearch全文检索、指定字段检索实战技巧,并提供详尽的源码举例(微信有字数限制,删除了代码,详见博客)。是不可多得学习&实战资料。...2、多字段检索 (Multi-field Search) 如我们已经看到的,要在搜索中查询多个文档字段(例如在标题和摘要中搜索相同的查询字符串),请使用multi_match查询。...例如,如果想在标题中搜索一本名为“Elasticsearch”或“Solr”的书,AND由“clinton gormley”创作,但NOT由“radu gheorge”创作: POST /bookdb_index...10、字符串检索( Query String) query_string查询提供以简明的简写语法执行多匹配查询 multi_match queries ,布尔查询 bool queries ,提升得分...更新:已筛选的查询已推出的Elasticsearch 5.X版本中移除,有利于布尔查询。 这是与上面重写的使用bool查询相同的示例。 返回的结果是完全一样的。

    2.4K80

    Elasticsearch初体验-创建Index,Document以及常见的ES查询

    从官网介绍可以看出几个关键的字眼,Elasticsearch是分布式的搜索、存储和数据分析引擎。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。 它很强很好用。...全文检索结果 查出来7条记录,每条记录都有相关度分数,并且按照相关度分数由高到低排好序!...must 必须满足 子句(查询)必须出现在匹配的文档中,并将有助于得分。 filte 过滤器 不计算相关度分数,cache 子句(查询)必须出现在匹配的文档中。...should 可能满足(SQL中的or) 子句(查询)应出现在匹配的文档中。也可以不在文档中。 must_not:必须不满足 不计算相关度分数 子句(查询)不得出现在匹配的文档中。...的其他 内核中PageCache和java文件系统IO/NIO以及内存中缓冲区的作用 通过Java Socket编程观察内核TCP的三次握手 深入底层探析网络编程之多路复用器(select,poll

    1.3K20

    一起学Elasticsearch系列-Query DSL

    Elasticsearch提供许多种全文搜索的查询类型,例如: Match Query:最基本的全文搜索查询。 Match Phrase Query:用于查找包含特定短语的文档。...请注意,match 查询不仅仅会匹配完全相同的短语,它还可以处理更复杂的情况,如多个单词(它会匹配任何一个)、误拼、同义词等,这主要取决于你所使用的分析器和搜索设置。...例如,“best_fields” 类型会从指定的字段中挑选分数最高的匹配结果计算最终得分,而“most_fields” 类型则会在每个字段中都寻找匹配项并将其分数累加起来。...must:必须满足子句(查询)必须出现在匹配的文档中,并将有助于得分。 filter:过滤器不计算相关度分数。 should:满足 or子句(查询)应出现在匹配的文档中。...如果匹配的文档同时满足 should 子句的条件,那么它们的得分将会更高。 那如果我们一起使用的时候想让should满足该怎么办?这时候minimum_should_match 参数就派上用场

    45420

    实战 | Elasticsearch自定义评分的N种方法

    即使同一用户发出的同一个查询,也可能因为用户所处场景不同,其期望结果也存在很大差异。 问题2:哪些信息是和用户需求真正相关的? 搜索引擎本质是一个匹配过程,即从海量的数据中找到匹配用户需求的内容。...而全文搜索引擎Elasticsearch中不仅需要找到匹配的文档,还需根据它们相关度的高低进行排序。 实现相关度排序的核心概念是评分。 _score就是Elasticsearch检索返回的评分。...该得分衡量每个文档与查询的匹配程度。...文档分数越高,则文档越相关。 分数与查询匹配成正比。查询中的每个子句都将有助于文档的得分。 3、Elasticsearch 如何计算评分?...文档满足must或 should条款的标准的程度有助于文档的相关性得分分数越高,文档就越符合您的搜索条件。 must_not子句中的条件被视为过滤器。

    6.1K31

    学好Elasticsearch系列-Query DSL

    Elasticsearch提供许多种全文搜索的查询类型,例如: Match Query: 最基本的全文搜索查询。 Match Phrase Query: 用于查找包含特定短语的文档。...例如,“best_fields” 类型会从指定的字段中挑选分数最高的匹配结果计算最终得分,而“most_fields” 类型则会在每个字段中都寻找匹配项并将其分数累加起来。...如果相同的 filter 查询再次执行,Elasticsearch 可以直接从缓存中获取这个 bitset,而不需要再次遍历所有的文档来找出哪些文档符合这个 filter。...must:必须满足子句(查询)必须出现在匹配的文档中,并将有助于得分。 filter:过滤器不计算相关度分数。 should:满足 or子句(查询)应出现在匹配的文档中。...如果匹配的文档同时满足 should 子句的条件,那么它们的得分将会更高。 那如果我们一起使用的时候想让should满足该怎么办?这时候minimum_should_match 参数就派上用场

    27440

    学好Elasticsearch系列-Query DSL

    Elasticsearch提供许多种全文搜索的查询类型,例如: Match Query: 最基本的全文搜索查询。 Match Phrase Query: 用于查找包含特定短语的文档。...例如,“best_fields” 类型会从指定的字段中挑选分数最高的匹配结果计算最终得分,而“most_fields” 类型则会在每个字段中都寻找匹配项并将其分数累加起来。...如果相同的 filter 查询再次执行,Elasticsearch 可以直接从缓存中获取这个 bitset,而不需要再次遍历所有的文档来找出哪些文档符合这个 filter。...must:必须满足子句(查询)必须出现在匹配的文档中,并将有助于得分。 filter:过滤器不计算相关度分数。 should:满足 or子句(查询)应出现在匹配的文档中。...如果匹配的文档同时满足 should 子句的条件,那么它们的得分将会更高。 那如果我们一起使用的时候想让should满足该怎么办?这时候minimum_should_match 参数就派上用场

    27110

    023.基于IT论坛案例学习Elasticsearch(二):Query高级知识(一)

    / 总条件个数 # 假设在每个查询条件中,匹配到一个单词得分1 # 那么doc4得分为(1+1)*2/2=2 # 同理doc5得分为(0+2)*1/2=1 # 于是doc4就排在doc5之前 dis_max...query:搜索到的结果,如果某一个field中匹配到了尽可能多的关键词,那么它应该评分更高,而不是尽可能多的field匹配到了少数的关键词就排在前面 dis_max的原理是:多个query中,得分最高的...courses # 这里结果也是很难理解的,因为我们预期doc1是比doc2优先返回的 # 评分计算时很复杂的, 不只是TF/IDF算法,不同的query,不同的语法,都有不同的计算score的细节,所以这里就不再深究...best_fields与most_fields策略的区别: best_fields,对多个field进行搜索,挑选某个field匹配度最高的那个分数,同时在多个query最高分相同的情况下,在一定程度上考虑其他...中匹配到Smith的分数 # 当然影响分数的因素是很多的,这里是说一个普适的规律 使用most_fields进行cross-fields搜索的一些问题: 问题1:越多的field的匹配到关键词其分数会高与少量

    74320

    ES 自定义打分

    ES 自定义打分 Elasticsearch 会为 query 的每个文档计算一个相关度得分 score ,并默认按照 score 从高到低的顺序返回搜索结果。...在很多场景下,我们不仅需要搜索匹配的结果,还需要能够按照某种方式对搜索结果重新打分排序。例如: •搜索具有某个关键词的文档,同时考虑到文档的时效性进行综合排序。...3.最终结果的分数 result_score 等于 query_score 与 func_score 按某种方式计算的结果(默认是相乘)。 例如,搜索标题包含 elasticsearch 的文档。...(query 原始分数、自定义函数得分、最终结果 score )。...}} 默认情况下,即不设置 field 时会使用 Lucene doc ids 作为随机源去生成随机值,但是这会消耗大量内存,官方建议可以设置 field 为 _seq_no ,主要注意的是,即使指定相同

    2.2K31

    第16篇-关于Elasticsearch的6件不太明显的事情

    3.搜索分数 Elasticsearch的主要目的是提供一个搜索引擎。目标是提供最匹配的文档。但是,Elasticsearch实际上如何知道它们是什么?...对于每个搜索查询,Elasticsearch都会计算相关性得分分数基于tf-idf算法,该算法代表术语频率-反向文档频率。 该算法基本上计算出两个值。第一个-术语频率-表示文档中给定术语的使用频率。...但是,搜索文档时将应用相同的步骤。查询也将针对字符进行过滤,标记化并针对令牌进行过滤。然后,Elasticsearch搜索带有标准化术语的文档。...Elasticsearch中的字段存储在反向索引结构中,这使拾取匹配文档的速度非常快。 可以为每个字段定义特定的过滤器。定义分为称为分析器的结构。可以使用多个分析仪分析一个字段以实现不同的目标。...不要忘记,即使您错误配置分片或索引的数量,也始终可以将数据重新索引到设置不同分片数量的新索引。 最后但并非最不重要的。您始终可以一次查询多个索引。

    2.4K00

    Elasticsearch探索:相关性打分机制 API

    只要一个文档与查询匹配,Lucene就会为查询计算分数,然后合并每个匹配术语的分数。这里使用的分数计算公式叫做 实用计分函数(practical scoring function)。...constant_score 查询中,它可以包含一个查询或一个过滤,为任意一个匹配的文档指定分数,忽略TF/IDF信息。...将某个字段的值进行计算得出分数 random_score:随机得到 0 到 1 分数, 为每个用户都使用一个不同的随机分数来对结果排序,但对某一具体用户来说,看到的顺序始终是一致的 Decay functions...— linear, exp, gauss:以某个字段的值为标准,距离某个值越近得分越高 script_score 如果需求超出以上范围时,用自定义脚本完全控制分数计算的逻辑。...现在要优化搜索功能,使其以文本相关度排序为主,但是越新的微博会排在相对靠前的位置,点赞(忽略相同计算方式的转发和评论)数较高的微博也会排在较前面。

    1.7K11

    触类旁通Elasticsearch:关联

    例如,根据查询条件的匹配程度,每个内部会员文档会得到自己的得分。但是来自应用的查询是为了查找分组文档,所以ES需要为整个分组文档给出一个得分。在这点上一共有4中选项,通过score_mode设置。...avg:这是默认选项,系统获取所有匹配的内部文档之分数,并返回其平均分。 total:系统获取所有匹配的内部文档之分数,将其求和并返回。 max:返回匹配的内部文档之最大得分。...none:考虑总文档得分的计算时,不保留、不统计嵌套文档的得分。 (4)获知哪些内部文档匹配上了 可以在嵌套查询或过滤器中添加一个inner_hits对象,来展示匹配上的嵌套文档。...父子文档则是完全不同的ES文档,所以只能分别搜索它们,效率更低。 对于文档的索引、更新和删除而言,父子的方式就显得出类拔萃。这是因为父辈和子辈文档都是独立的ES文档,各自管理。...routing字段向ES提供散列的ID,即路由值,这使得ES将父子文档路由到相同的分片,搜索的时候能从中获益。

    6.3K20

    23个最有用的Elasticseaerch检索技巧(上)

    前言 本文主要介绍 Elasticsearch 23种最有用的检索技巧,提供详尽的源码举例,并配有相应的Java API实现,是不可多得的 Elasticsearch 学习&实战资料 数据准备 为了讲解不同类型...3、 Boosting提升某字段得分的检索( Boosting) 由于我们正在多个字段进行搜索,我们可能希望提高某一字段的得分。...例如,如果想在标题中搜索一本名为 "Elasticsearch" 或 "Solr" 的书,AND由 "clinton gormley" 创作,但NOT由 "radu gheorge" 创作 GET bookdb_index...然而,作为一个短语查询,词与词之间的接近度被考虑在内,所以文档_id 4分数更好 9、匹配词组前缀检索 匹配词组前缀查询在查询时提供搜索即时类型或 "相对简单" "的自动完成版本,而无需以任何方式准备数据...10、字符串检索( Query String) query_string查询提供以简明的简写语法执行多匹配查询 multi_match queries ,布尔查询 bool queries ,提升得分

    1.8K20

    Elasticsearch:使用 function_score 及 soft_score 定制搜索结果的分数

    经过这样的改造后,我们发现我们的分数其实不光是全文搜索的相关性,同时它也紧紧地关联我们的用户体验和游戏的难道系数。 那么我们如何使用这个呢?...尽管这个分数没有多大实际的意思,但是它可以让我们每次进入一个网页看到不同的文档,而不是严格按照固定的匹配而得到的固定的结果。...我们可以看出来我们的分数又有些变化。而且排序也有变化。 functions 上面的例子中,每一个 doc 都会乘以相同的系数,有时候我们需要对不同的 doc 采用不同的权重。...我们可以看出来,在这一次的搜索中 Final Fantasy XIII 的排名变成第一。...这次的搜索结果显示 Final Fantasy XIII-2 是得分最高的文档。

    1.6K51

    干货 | ElasticSearch相关性打分机制

    最近我们在做场馆搜索的功能时,接触到elasticsearch(简称es)搜索引擎。...只要一个文档与查询匹配,Lucene就会为查询计算分数,然后合并每个匹配术语的分数。这里使用的分数计算公式叫做 实用计分函数(practical scoring function)。...尽管查询正则值的目的是为了使查询结果之间能够相互比较,但是它并不十分有效,因为相关度分数_score 的目的是为了将当前查询的结果进行排序,比较不同查询结果的相关度分数没有太大意义。...ElasticSearch预定义一些函数: weight 为每个文档应用一个简单的而不被正则化的权重提升值:当 weight 为 2 时,最终结果为 2 * _score field_value_factor...random_score 为每个用户都使用一个不同的随机分数来对结果排序,但对某一具体用户来说,看到的顺序始终是一致的。

    8.4K136

    初识 Elasticsearch7.x(二)

    这个分数值越高,表明我们搜索匹配的相关度越高 "_source" : { // 文档详情 "title" : "元旦快乐2", "price...我们也可以设置参数 minimum_should_match 来设置至少匹配的 term,达到控制精度效果,我们可以将其设置为某个具体数字(2),更常用的做法是将其设置为一个百分数(75%),因为我们无法控制用户搜索时输入的单词数量...Elasticsearch 默认按照相关性得分排序,即每个文档跟查询的匹配程度。...模糊匹配 精确短语匹配 或许是过于严格。也许我们想要包含 Happy new birthday 的文档也能够匹配 Happy birthday , 尽管情形不完全相同。...因为忽略评分,所以返回所有文档的 0 分。 就这么简单! 当我们需要多个过滤器时,只须将它们置入 bool 过滤器的不同部分即可。

    2.8K20

    第19篇-Kibana对Elasticsearch的实用介绍

    开发工具 11.Elasticsearch查询方法 12.Elasticsearch全文查询 13.Elasticsearch查询-术语查询 14.Python中的Elasticsearch入门 15...要更新值,请对同一文档使用相同的PUT命令。...查询子句的行为不同,取决于它们是在查询上下文中还是在过滤器上下文中使用: ● 查询上下文:查询上下文中使用的查询子句回答以下问题:“此文档与该查询子句的匹配程度如何?” 。...它们将过滤出不匹配的文档,但不会影响匹配文档的分数。 提示:在查询上下文中使用查询子句以应对可能影响匹配文档得分(即文档匹配程度)的条件,并在过滤器上下文中使用所有其他查询子句。...现在,您对什么是Elasticsearch以及如何在其上插入,更新,删除和搜索数据有所了解。Kibana具有更多查看数据的功能,包括将其显示为不同的图形。建议您探索所有这些。

    5.1K00
    领券