不过, Elasticsearch 还在搜索时提供了相应的解决方案:使用cross_fields类型进行multi_match查询。cross_fields使用词中心式(term-centric)的查询方式,这与best_fields和most_fields使用字段中心式(field-centric)的查询方式非常不同,它将所有字段当成一个大字段,并在每个字段中查找每个
cross_fields类型采用了一种以词条为中心(Term-centric)的方法,这种方法和best_fields及most_fields采用的以字段为中心(Field-centric)的方法有很大的区别。它将所有的字段视为一个大的字段,然后在任一字段中搜索每个词条。 为了阐述以字段为中心和以词条为中心的查询的区别,看看以字段为中心的most_fields查询的解释(...
1.most_fields这种方式搜索也存在某些问题 它不能使用operator或minimum_should_match参数来降低次相关结果造成的长尾效应。 2.词peter和smith都必须出现,但是可以出现在任意字段中。 3.cross_fields类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的搜索方式很自然的解决了字段中心...
Multi-match query 的目的多字段匹配,但Multi-match query 中的best_fields, most_fields, cross_fields 分不清楚,都什么含义? 下面我们一一举例解读。 best_fields 为默认值,如果不指定,默认best_fields 匹配。 含义:多个字段中,返回评分最高的。 类似:dis_max query。 等价举例:(两个一起看,加深理解) 默认...
cross_fields类型采用了一种以词条为中心(Term-centric)的方法,这种方法和best_fields及most_fields采用的以字段为中心(Field-centric)的方法有很大的区别。 它将所有的字段视为一个大的字段,然后在任一字段中搜索每个词条。 operator:operator设为了and,表示所有的词条都需要出现; ...
解决,cross_fields要求每个term都必须在任何一个field中出现 2. 长尾问题 解决,参见上一条,每个term都必须匹配,长尾问题自然迎刃而解。 3. 评分不准的问题 解决,cross_fields通过混合不同字段逆向索引文档频率的方式解决词频的问题,具体来说,Peter在first_name中频率会高一些,在last_name中频率会低一些,在两个字...
elasticsearch的cross_fields查询 1.most_fields这种方式搜索也存在某些问题 它不能使用operator或minimum_should_match参数来降低次相关结果造成的长尾效应。 2.词peter和smith都必须出现,但是可以出现在任意字段中。 3.cross_fields类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的...
简介:题记Multi-match query 的目的多字段匹配,但 Multi-match query 中的 best_fields, most_fields, cross_fields 分不清楚,都什么含义?下面我们一一举例解读。 链接 best_fields 为默认值,如果不指定,默认best_fields 匹配。 含义:多个字段中,返回评分最高的。
Multi-Match提供了best_fields,most_fields,cross_fields三种查询类型来应对不同的对字段查询场景。Multi-Match基本语法如下 代码语言:javascript 代码运行次数:0 运行 AI代码解释 GET/_search{"query":{"multi_match":{"query":"this is a test","fields":["subject","message"]}}} ...
白话Elasticsearch14-基于multi_match 使用most_fields策略进行cross-fields search弊端 白话Elasticsearch15-使用copy_to定制组合field解决cross-fields搜索弊端 承接上两篇, 接下来看下如何使用原生cross-fiels技术解决搜索的弊端 例子 使用DSL如下,可以解决 "operator": "and", 代码语言:javascript 代码运行次数:0 运行 ...