ElasticSearch-match_phrase查询

match_phrase
GET /my_index/address/_search
{
    query: {match_phrase:"hello world"}
}

hello world 必须相邻才能被搜索出来,比如下面的句子:

1.Hello World tom, do you know me // 能搜到
2.see the world // 搜不到
3.Hello tom // 搜不到
match_phrase slop
GET /my_index/address/_search
{
	query: {
		match_phrase: {
			content: "hello world",
			slop: 2
		}
	}
}

可以通过指定slot来控制移动词数。这里中间间隔的词数<2才能搜到。对于下面的例子:

1.hello world // 能搜到
2.hello es world // 能搜索到
3.hello tom es world // 不能搜到
4.hello lity do my world // 搜不到 3>2

match_phrase 原理

match_phrase执行过程:

  1. 如match搜索一样进行分词
  2. 对分词后的单词到field中去进行搜索(多个term匹配)。这一步返回每个单词对应的doc,并返回这些单词在对应的doc中的位置
  3. 对返回的doc进行第一步的筛选,找到每个单词都在同一个field的doc
  4. 对第3步进行筛选后的doc进行再一次的筛选,选回位置符合要求的doc。比如,对于match_phrase,就是找到后一个单词的位置比前一个单词的位置大1。或者移动次数<slot的文档
  5. proximity match(使用slot)原理一样,只是第四位对位置进行筛选时的方法不同

比如要搜索“hello world”

  1. 分词为 hello 和 world
  2. 分别对term hello和world去搜索。返回两者匹配到的文档。
  3. 第一次筛选,取两个的交集。
  4. 继续筛选,对于match_phrase,就是找到后一个单词world的位置比前一个单词hello的位置大1的文档

相关推荐

  1. elasticsearch查询

    2024-07-22 16:50:07       55 阅读
  2. Go查询Elasticsearch

    2024-07-22 16:50:07       62 阅读
  3. Elasticsearch一些函数查询

    2024-07-22 16:50:07       50 阅读
  4. Elasticsearch 查询语法

    2024-07-22 16:50:07       62 阅读
  5. ElasticSearch DSL Bool查询

    2024-07-22 16:50:07       64 阅读
  6. Elasticsearch 查询语句概述

    2024-07-22 16:50:07       59 阅读
  7. ElasticSearch聚合查询

    2024-07-22 16:50:07       36 阅读
  8. ElasticSearch的DSL查询

    2024-07-22 16:50:07       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 16:50:07       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 16:50:07       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 16:50:07       87 阅读
  4. Python语言-面向对象

    2024-07-22 16:50:07       96 阅读

热门阅读

  1. 计算机视觉主流框架及其应用方向

    2024-07-22 16:50:07       26 阅读
  2. NLP基础技术

    2024-07-22 16:50:07       22 阅读
  3. Linux的shell编程

    2024-07-22 16:50:07       24 阅读
  4. 【Vue】 组件通信方式

    2024-07-22 16:50:07       21 阅读
  5. Android 各个版本兼容型问题

    2024-07-22 16:50:07       23 阅读
  6. 透彻理解Transformer模型:详解及实用示例(C#版)

    2024-07-22 16:50:07       23 阅读
  7. 商品信息管理系统(C语言)

    2024-07-22 16:50:07       21 阅读
  8. Vue的模板编译:深入理解渲染函数与预编译模板

    2024-07-22 16:50:07       21 阅读
  9. Rust编程- 函数指针与返回闭包

    2024-07-22 16:50:07       22 阅读