cross-fields搜索,一个唯一标识,跨了多个field。比如一个人,标识,是姓名;一个建筑,它的标识是地址。姓名可以散落在多个field中,比如first_name和last_name中,地址可以散落在country,province,city中。 跨多个field搜索一个标识,比如搜索一个人名,或者一个地址,就是cross-fields搜索 初步来说,如果要实现,可能用most...
1.most_fields这种方式搜索也存在某些问题 它不能使用operator或minimum_should_match参数来降低次相关结果造成的长尾效应。 2.词peter和smith都必须出现,但是可以出现在任意字段中。 3.cross_fields类型首先分析查询字符串并生成一个词列表,然后它从所有字段中依次搜索每个词。这种不同的搜索方式很自然的解决了字段中心...
cross_fields类型采用了一种以词条为中心(Term-centric)的方法,这种方法和best_fields及most_fields采用的以字段为中心(Field-centric)的方法有很大的区别。它将所有的字段视为一个大的字段,然后在任一字段中搜索每个词条。 为了阐述以字段为中心和以词条为中心的查询的区别,看看以字段为中心的most_fields查询的解释(...
Multi-match query 的目的多字段匹配,但Multi-match query 中的best_fields, most_fields, cross_fields 分不清楚,都什么含义? 下面我们一一举例解读。 best_fields 为默认值,如果不指定,默认best_fields 匹配。 含义:多个字段中,返回评分最高的。 类似:dis_max query。 等价举例:(两个一起看,加深理解) 默认...
不过, Elasticsearch 还在搜索时提供了相应的解决方案:使用 cross_fields 类型进行 multi_match 查询。 cross_fields 使用词中心式(term-centric)的查询方式,这与 best_fields 和most_fields 使用字段中心式(field-centric)的查询方式非常不同,它将所有字段当成一个大字段,并在 每个字段 中查找 每个词。
解决,cross_fields要求每个term都必须在任何一个field中出现 2. 长尾问题 解决,参见上一条,每个term都必须匹配,长尾问题自然迎刃而解。 3. 评分不准的问题 解决,cross_fields通过混合不同字段逆向索引文档频率的方式解决词频的问题,具体来说,Peter在first_name中频率会高一些,在last_name中频率会低一些,在两个字...
简介:题记Multi-match query 的目的多字段匹配,但 Multi-match query 中的 best_fields, most_fields, cross_fields 分不清楚,都什么含义?下面我们一一举例解读。 链接 best_fields 为默认值,如果不指定,默认best_fields 匹配。 含义:多个字段中,返回评分最高的。
cross field的问题,是否解决了呢? 问题1:只是找到尽可能多的field匹配的doc,而不是某个field完全匹配的doc 答: 解决,最匹配的document被最先返回 问题2:most_fields,没办法用minimum_should_match去掉长尾数据,就是匹配的特别少的结果 答: 解决,可以使用minimum_should_match去掉长尾数据 ...
Multi-match query 的目的多字段匹配,但 Multi-match query 中的 best_fields, most_fields, cross_fields 分不清楚,都什么含义? 下面我们一一举例解读。 best_fields 为默认值,如果不指定,默认best_fields 匹配。 含义:多个字段中,返回评分最高的。
跨多个field搜索一个标识,比如搜索一个人名,或者一个地址,就是cross-fields搜索初步来说,如果要实现,可能用most_fields比较合适。因为best_fields是优先搜索单个field最匹配的结果,cross-fields本身就不是一个field的问题了。示例构造数据POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" ...