分词测试

分词后倒排索引结果:可以通过http://127.0.0.1:9200/_analyze 测试

{
"analyzer":"ik_max_word",
"text":"我爱广州小蛮腰"
}

match匹配

1.match会条件分词去索引里面找 命中一个满足就返回

插入2条测试数据

文档1: 我爱广州小小蛮腰

文档2: 我爱成都

索引 文档
[文档1,位置0-1][文档2,位置0-1]
[文档1,位置1-2][文档2,位置1-2]
广州 [文档1,位置2-3]
[文档1,位置3-4]
[文档1,位置4-5]
[文档1,位置5-6]
成都                       [文档2,位置2-3]

2.搜索:我爱

默认搜索条件会跟索引一样进行分词 搜索可以指定分词或者指定不分词

我爱分词为 [我:0-1] [爱:1-2]   2个索引都命中

根据索引可以找到文档1,2

3.搜索:我爱我家

分词为:[我:0-1][爱我:1-2][我家:2-3]

[我:0-1] 命中3个文档 则返回三个文档

match_phrase

必须每个索引都命中同时 索引位置相邻才返回

1.搜索我爱命中文档 1 2

2.搜索我爱我家[我:0-1][爱我:1-2][我家:2-3]   虽然前面2个命中第三个没命中 则什么都搜索不出来

什么是索引位置相邻才返回?

比如搜索我爱成都,我们自己换了分词规则 搜索分词变为 [我:0-1][成都:1-2][爱:2-3] 虽然都能命中索引 但是索引位置不相邻 则不会命中

可以使用slop指定跨多少位置 比如以下就是允许跨1个位置  则可以查询出数据

{
"query":{
"match_phrase":{
"productName":{
"query":"我爱我家",
"slop":"1"
} }
}
}

项目中遇到搜索不到数据的解决方式

如果出现搜索不出来数据 但是没有 按上面规则来进行判断

1.首先看搜索不出来的文档的分词规则

2.然后测试搜索分词跟他是否一致

使用以下api可以查询到指定文档指定字段的分词结果:

GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}

使用以下api查看搜索结果

get http://127.0.0.1:9200/opcm3/_validate/query?explain

{
"query":{
"match_phrase":{
"productName":{
"query":"纯生"
}
}
}
}
{
"valid": true,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"explanations": [
{
"index": "opcm3",
"valid": true,
"explanation": "productName:\"(chun c) (sheng s)\""
}
]
}

可以理解为(chun or c) and (sheng or s)

elasticsearch match和match_phrase匹配原则(十)的更多相关文章

  1. ES查询-match VS match_phrase

    我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...

  2. es match、match_phrase、query_string和term的区别

    (一)text字段和keyword字段的区别 以下给出一个例子: 首先建立一个索引和类型,引入一个keywork的字段: PUT my_index { "mappings": { ...

  3. 第一章——第三节 intent的匹配原则

    问题 一.三种匹配原则 二.匹配的原理 三.隐式启动Activity,如何判断跳转的Activity是否存在. 判断Intent是否可行的两种办法.

  4. 【Spring】15、spring mvc路径匹配原则

    Ant path 匹配原则 在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径 ...

  5. mysql 联合索引匹配原则

    读mysql文档有感 看了mysql关于索引的文档,网上有一些错误的博客文档,这里我自己记一下. 几个重要的概念 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. ...

  6. Android IntentFilter 匹配原则浅析

    1 Intent分为两大类,显式和隐式. 显式事件,就是指通过 component Name 属性,明确指定了目标组件的事件. 比如我们新建一个Intent,指名道姓的说,此事件用于启动名为" ...

  7. struts2配置 匹配原则 配置各项默认

    struts开发流程 1,引入jar包 2,配置web.xml 3,开发action类 4,配置struts.xml   版本: 2.3 引入jar文件 commons-fileupload-1.2. ...

  8. mysql 最左前缀匹配原则

    1.在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例:对列col1.列col2和列col3建一个联合索引 KEY index_col1_co ...

  9. ant path匹配原则

    ant path匹配原则 又称路径匹配原则,spring中的相关策略类org.springframework.util.AntPathMatcher 路径模式使用了apache ant的路径样式 ap ...

随机推荐

  1. electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!

    Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium:  ...

  2. 使用EL表达式正确情况下报错:javax.servlet.jsp cannot be resolved to a type

    这个错误可能是服务器自带的servlet库未导入的原因.右键项目属性,转到Targeted Runtimes,选择一个服务器,例如Tomcat,单击应用,可能就可以解决.

  3. [Codeplus 2017] 晨跑

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5105 [算法] 答案为三个数的最小公倍数 [代码] #include<bits ...

  4. eclipse的快捷键---调试

    1:查看类或接口的方法 Ctrl+T 2:debug调试查看信息 Ctrl+Shift+i 3:debug调试快捷键 (1):F11好像是重新运行debug. (2):F8直接输出结果.(3):F5单 ...

  5. 命令框中oracle dmp文件的导入和导出(仅做个人备忘)

    1.dmp文件导出 (全部)exp 用户名/密码 rows=y indexes=n compress=n buffer=65536 feedback=100000  file=F:\test.dmp ...

  6. 347 Top K Frequent Elements 前K个高频元素

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素.例如,给定数组 [1,1,1,2,2,3] , 和 k = 2,返回 [1,2].注意:    你可以假设给定的 k 总是合理的,1 ≤ k ...

  7. [转]linux下ulimit命令详解

    转自:http://blog.chinaunix.net/uid-23842323-id-2656582.html 1,说明:ulimit用于shell启动进程所占用的资源.2,类别:shell内建命 ...

  8. jvm gc日志解读

    参考 https://blog.csdn.net/yxc135/article/details/12137663 认识gc日志每个位置的含义 java 8 full gc [Full GC (Meta ...

  9. Intellij IDEA14配置

    一.下载 官网下载地址:http://www.jetbrains.com/idea/ 目前最新的版本是15,发现15注册比较麻烦,好像需要只能通过联网激活.而网上14的离线注册码一大堆,就下载了14, ...

  10. 模拟测试—moq:简单一两句

    在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法 ...