GET /forum/article/_search
{"query": {"match_phrase": {"title": {"query": "java spark","slop":  1}}}
}

slop的含义是什么?

query string,搜索文本,中的几个term,要经过几次移动才能与一个document匹配,这个移动的次数,就是slop

实际举例,一个query string经过几次移动之后可以匹配到一个document,然后设置slop

hello world, java is very good, spark is also very good.

java spark,match phrase,搜不到

如果我们指定了slop,那么就允许java spark进行移动,来尝试与doc进行匹配

java        is      very        good        spark       isjava        spark
java        -->     spark
java                -->         spark
java                            -->         spark

这里的slop,就是3,因为java spark这个短语,spark移动了3次,就可以跟一个doc匹配上了

slop的含义,不仅仅是说一个query string terms移动几次,跟一个doc匹配上。一个query string terms,最多可以移动几次去尝试跟一个doc匹配上

slop,设置的是3,那么就ok

GET /forum/article/_search
{"query": {"match_phrase": {"title": {"query": "java spark","slop":  3}}}
}

就可以把刚才那个doc匹配上,那个doc会作为结果返回

但是如果slop设置的是2,那么java spark,spark最多只能移动2次,此时跟doc是匹配不上的,那个doc是不会作为结果返回的

做实验,验证slop的含义

GET /forum/article/_search
{"query": {"match_phrase": {"content": {"query": "spark data","slop": 3}}}
}
spark is best big data solution based on scala ,an programming language similar to java sparkspark data--> data--> data
spark         --> data
GET /forum/article/_search
{"query": {"match_phrase": {"content": {"query": "data spark","slop": 5}}}
}
spark       is              best        big         datadata        spark
-->         data/spark
spark       <--data
spark       -->             data
spark                       -->         data
spark                                   -->         data

slop搜索下,关键词离的越近,relevance score就会越高,做实验说明。。。

{"took": 4,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 3,"max_score": 1.3728157,"hits": [{"_index": "forum","_type": "article","_id": "2","_score": 1.3728157,"_source": {"articleID": "KDKE-B-9947-#kL5","userID": 1,"hidden": false,"postDate": "2017-01-02","tag": ["java"],"tag_cnt": 1,"view_cnt": 50,"title": "this is java blog","content": "i think java is the best programming language","sub_title": "learned a lot of course","author_first_name": "Smith","author_last_name": "Williams","new_author_last_name": "Williams","new_author_first_name": "Smith"}},{"_index": "forum","_type": "article","_id": "5","_score": 0.5753642,"_source": {"articleID": "DHJK-B-1395-#Ky5","userID": 3,"hidden": false,"postDate": "2017-03-01","tag": ["elasticsearch"],"tag_cnt": 1,"view_cnt": 10,"title": "this is spark blog","content": "spark is best big data solution based on scala ,an programming language similar to java spark","sub_title": "haha, hello world","author_first_name": "Tonny","author_last_name": "Peter Smith","new_author_last_name": "Peter Smith","new_author_first_name": "Tonny"}},{"_index": "forum","_type": "article","_id": "1","_score": 0.28582606,"_source": {"articleID": "XHDK-A-1293-#fJ3","userID": 1,"hidden": false,"postDate": "2017-01-01","tag": ["java","hadoop"],"tag_cnt": 2,"view_cnt": 30,"title": "this is java and elasticsearch blog","content": "i like to write best elasticsearch article","sub_title": "learning more courses","author_first_name": "Peter","author_last_name": "Smith","new_author_last_name": "Smith","new_author_first_name": "Peter"}}]}
}
GET /forum/article/_search
{"query": {"match_phrase": {"content": {"query": "java best","slop": 15}}}
}
{"took": 3,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 2,"max_score": 0.65380025,"hits": [{"_index": "forum","_type": "article","_id": "2","_score": 0.65380025,"_source": {"articleID": "KDKE-B-9947-#kL5","userID": 1,"hidden": false,"postDate": "2017-01-02","tag": ["java"],"tag_cnt": 1,"view_cnt": 50,"title": "this is java blog","content": "i think java is the best programming language","sub_title": "learned a lot of course","author_first_name": "Smith","author_last_name": "Williams","new_author_last_name": "Williams","new_author_first_name": "Smith"}},{"_index": "forum","_type": "article","_id": "5","_score": 0.07111243,"_source": {"articleID": "DHJK-B-1395-#Ky5","userID": 3,"hidden": false,"postDate": "2017-03-01","tag": ["elasticsearch"],"tag_cnt": 1,"view_cnt": 10,"title": "this is spark blog","content": "spark is best big data solution based on scala ,an programming language similar to java spark","sub_title": "haha, hello world","author_first_name": "Tonny","author_last_name": "Peter Smith","new_author_last_name": "Peter Smith","new_author_first_name": "Tonny"}}]}
}

其实,加了slop的phrase match,就是proximity match,近似匹配

1、java spark,短语,doc,phrase match
2、java spark,可以有一定的距离,但是靠的越近,越先搜索出来,proximity match

13.es slop参数实现近似匹配以及原理剖析和相关实验相关推荐

  1. 白话Elasticsearch18-深度探秘搜索技术之基于slop参数实现近似匹配以及原理剖析

    文章目录 概述 官网 slop 含义 例子 示例一 示例二 示例三 概述 继续跟中华石杉老师学习ES,第18篇 课程地址: https://www.roncoo.com/view/55 接上篇博客 白 ...

  2. 18_ElasticSearch 基于slop参数实现近似匹配

    18_ElasticSearch 基于slop参数实现近似匹配 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) ...

  3. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  4. 【es】es 分布式一致性原理剖析(二)-Meta篇

    1.概述 转载:Elasticsearch分布式一致性原理剖析(二)-Meta篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布 ...

  5. 【es】es 分布式一致性原理剖析(三)-Data篇

    1.概述 转载:Elasticsearch分布式一致性原理剖析(三)-Data篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布 ...

  6. 【Android 高性能音频】Oboe 播放器开发 ( 为 OpenSL ES 配置参数以获得最佳延迟 | Oboe 音频流 | Oboe 音频设备 )

    文章目录 一.获得最佳延迟 二.Oboe 音频流 三.Oboe 音频设备 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② Oboe 全指 ...

  7. [FxCop.设计规则]13. 定义自定义属性参数的访问属性

    13.     定义自定义属性参数的访问属性 翻译概述: 一个比较无聊的规则,实在看不出在什么情况下,一个开发者会做出违反这条规则的设计.没有别的内容,只是说应该为自定义特性的构造函数中的参数提供一个 ...

  8. c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

    在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...

  9. 解析可变参数函数的实现原理(printf,scanf)

    From: http://hi.baidu.com/huifeng00/blog/item/085e8bd198f46ed3a8ec9a0b.html 学习C的语言的时候,肯定接触到标准输出和标准输入 ...

  10. 【es】es 分布式一致性原理剖析 节点篇

    1.概述 好文章:Elasticsearch分布式一致性原理剖析(一)-节点篇 前言 "Elasticsearch分布式一致性原理剖析"系列将会对Elasticsearch的分布式 ...

最新文章

  1. Django mysql 多线程_【实例:利用Django管理后台管理IP地址】(四)Django test+多线程+数据库+(踩坑)...
  2. 【Vue】组件复用导致的路由切换时页面不刷新问题
  3. 成功解决sys.argv[1] IndexError: list index out of range错误
  4. php中静态方法的调用,php中静态方法和非静态方法如何相互调用?
  5. linux下启动solr命令,如何自动启动Solr?
  6. web 网页按比例显示图片 js
  7. python判断阿姆斯特朗数_Python 程序检查阿姆斯特朗数
  8. python基础课程第12章_流畅的python学习笔记-第12章
  9. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
  10. 编程语言那么多,学哪个能拿高薪?
  11. MVC添加控制器时提示无法检索“MyContosoUniversity.Models.Student”的元数据
  12. ArcGIS在三调,农村土地确权,国情普查项目中常用的编辑工具
  13. SpringBoot整合JWT实现前后端Token验证
  14. VC++_2010_学习版_下载教程
  15. 干货|程序员有哪些含金量高的证书可以考?
  16. 甘肃省谷歌卫星地图下载
  17. 如何使用Python来提取视频中的音频
  18. php微信实现线下收银扫码枪扫码支付微信支付
  19. electron-vue-windows
  20. Linux mkdir、touch、mv、cp等命令的介绍与使用

热门文章

  1. js date日期格式化
  2. uni-app框架、微信小程序项目
  3. Docker参数 -i -t 的作用
  4. Python 二进制数与十进制数转换表的制作
  5. Gene Pattern
  6. action的编写方式
  7. 手把手教你如何巧用Github的Action功能
  8. 西北工业大学计算机转专业,2021年西北工业大学大一新生转专业及入学考试相关规定...
  9. windows11,Windows10,服务器centos7安装docker,docker compose
  10. 史上最全的数据库面试题,面试前刷一刷