主要知识点:

  • 召回率的慨念
  • 精准度的慨念
  • match和近似匹配混合使用方法

 
 

 
 

召回率(recall:比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率。

精准度(precision):比如你搜索一个java spark,能不能尽可能让包含java spark,或者是java和spark离的很近的doc的分数越高排在最前面。

直接用match_phrase短语搜索,会导致必须所有term都在doc field中出现,而且距离在slop限定范围内,才能匹配上。如果某一个doc可能就只一有某一个term没有包含到,也是无法作为结果返回。比如:

java spark --> hello world java --> 就不能返回了

java spark --> hello world, java spark --> 才可以返回

 
 

近似匹配的时候,召回率比较低,精准度太高了

直接用match进行查询时召回率较高,但是精准度太低了。

 
 

很多时候我们可能希望有部分term被匹配也能做为结果返回,并且返回的结果集中,以近似匹配的方式进行排序。这时就要混合使用match和近似匹配实现召回率与精准度的平衡。此时可以用bool组合match query和match_phrase query一起,来实现上述效果。

 
 

一、先执行macth查询:

 
 

GET /forum/article/_search

{

"query": {

"match": {

"content": "java spark"

}

}

}

查出4条数据,最大数据的分数是

 
 

二、再进行match_phrase查询:

GET /forum/article/_search

{

"query": {

"match_phrase": {

"content": {

"query": "java spark",

"slop":50

}

}

}

}

查询出一条结果,可以和上边作分数比较,本次查询分数较低。

三、混合查询

 
 

GET /forum/article/_search

{

"query": {

"bool": {

"must": [

{"match": {

"content": "java spark"

}}

],

"should": [

{"match_phrase": {

"content": {

"query": "java spark",

"slop":50

}

}}

]

}

}

}

也查出两条结果,但是两条结果的分数和上两次查询都不同,满足了我们的需求,

最新文章

  1. iOS web remote debug 正确的姿势
  2. MS SQL 错误:The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "test" was unable to begin a distributed transaction.
  3. SMO启发式选择
  4. js 特效 手风琴效果
  5. PHP上传文件(学习)
  6. json-smart 使用示例
  7. MySQL 的一个Bug?
  8. LoonAndroid自动检测输入框 --- Author: rose && lvyerose@163.com
  9. 运行C++程序是出现错误:cannot open Debug/1.exe for writing
  10. kaliLinux 安装 telnet
  11. vue-cli3 一直运行 /sockjs-node/info?t= 解决方案
  12. 【XSY2668】排列统计 DP
  13. Struts1 不能进入Action,页面空白问题解决
  14. weblogic补丁安装失败(Patch B25A is mutually exclusive and cannot coexist with patch(es): UIAL)
  15. android开发-c++代码调用so库
  16. js中的Event对象
  17. Android蓝牙联机Demo解析
  18. git repo代码部署策略及工具
  19. node jade模板数据库操作
  20. js 右击事件

热门文章

  1. ES6 一些常用使用
  2. MFC:Win32-Dll及MFC-Dll编写调用
  3. MongoDB使用初步
  4. iOS开发】之CocoaAsyncSocket使用
  5. bzoj2844
  6. vue中时间控件绑定多个输入框
  7. [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮
  8. SpringBoot集成Swagger2 以及汉化 快速教程
  9. 如何下载JDK和JRE历史版本
  10. Spring AOP(aspect oriented programming) 转载