elasticsearch match和match_phrase匹配原则(十)
分词测试
分词后倒排索引结果:可以通过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匹配原则(十)的更多相关文章
- ES查询-match VS match_phrase
我们以一个查询的示例开始,我们在student这个type中存储了一些学生的基本信息,我们分别使用match和match_phrase进行查询. 首先,使用match进行检索,关键字是“He is”: ...
- es match、match_phrase、query_string和term的区别
(一)text字段和keyword字段的区别 以下给出一个例子: 首先建立一个索引和类型,引入一个keywork的字段: PUT my_index { "mappings": { ...
- 第一章——第三节 intent的匹配原则
问题 一.三种匹配原则 二.匹配的原理 三.隐式启动Activity,如何判断跳转的Activity是否存在. 判断Intent是否可行的两种办法.
- 【Spring】15、spring mvc路径匹配原则
Ant path 匹配原则 在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径 ...
- mysql 联合索引匹配原则
读mysql文档有感 看了mysql关于索引的文档,网上有一些错误的博客文档,这里我自己记一下. 几个重要的概念 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. ...
- Android IntentFilter 匹配原则浅析
1 Intent分为两大类,显式和隐式. 显式事件,就是指通过 component Name 属性,明确指定了目标组件的事件. 比如我们新建一个Intent,指名道姓的说,此事件用于启动名为" ...
- struts2配置 匹配原则 配置各项默认
struts开发流程 1,引入jar包 2,配置web.xml 3,开发action类 4,配置struts.xml 版本: 2.3 引入jar文件 commons-fileupload-1.2. ...
- mysql 最左前缀匹配原则
1.在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例:对列col1.列col2和列col3建一个联合索引 KEY index_col1_co ...
- ant path匹配原则
ant path匹配原则 又称路径匹配原则,spring中的相关策略类org.springframework.util.AntPathMatcher 路径模式使用了apache ant的路径样式 ap ...
随机推荐
- (多项式)因式分解定理(Factor theorem)与多项式剩余定理(Polynomial remainder theorem)(多项式长除法)
(多项式的)因式分解定理(factor theorem)是多项式剩余定理的特殊情况,也就是余项为 0 的情形. 0. 多项式长除法(Polynomial long division) Polynomi ...
- Python三次登陆
题目:Python实现三次登陆 不要急于马上把三次登陆写出来,一定要将复杂的程序简单化,必须一步一步地去扩展,这样才保证不会出错. 步骤一:实现简单的一次登陆 # 事先定义 user = 'dark_ ...
- bzoj2730矿场搭建(Tarjan割点)
2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1771 Solved: 835[Submit][Statu ...
- [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 深入理解JWT的使用场景和优劣
前面简单介绍了JWT的基础只是和简单的小Demo,但是对于JWT的应用场景和优缺点掌握的还够,这些东西只有自己实践过才能搞清楚其中的细节.在网上看到一个大佬对这块讲的比较好,就转载过来一起学习下. 原 ...
- “国家队爷”杯液体战争AI比赛!!__SymenYang
原帖 这两天一直在搞这个AI,提供的样例更本不是我的风格啊,看不懂更不会改... 所以我自己写了一个AI的平台,现在在不断的修改AI的策略,smart样例还是很容易过的,让line的行走速度变慢一点到 ...
- ACM_水题你要信了(修改版)
水题你要信了 Time Limit: 2000/1000ms (Java/Others) Problem Description: 某发最近又认识了很多妹(han)子,可是妹(han)子一多不免有时会 ...
- 344 Reverse String 反转字符串
请编写一个函数,其功能是将输入的字符串反转过来.示例:输入:s = "hello"返回:"olleh"详见:https://leetcode.com/probl ...
- Hadoop基础(二)
HDFS 读写流程 我们知道在HDFS中我们的文件按数据块进行存储,那么当我们写入或者读取一个文件的时候HDFS到底进行了哪些操作呢? HDFS 写流程 如上图所示,假如我们有一个四个节点的集群,并且 ...
- Tomcat发布项目,域名访问
域名访问项目 1,去掉访问路径的端口号: 找到 Tomcat 下的 conf 文件中的 server.xml,找到 8080 修改成 80, 2,项目绑定域名: <Host name=" ...