当前位置: 首页 > news >正文

开源的网站建设平台为什么不能去外包公司

开源的网站建设平台,为什么不能去外包公司,党中央建设的少年网站,做食品批发的网站目录 1.match_phrase使用介绍 2.规避可能产生的查询问题 解决方式 一.查询和索引分词器一致,即都使用max_word或者都使用smart 二.使用slop增加匹配的容忍度 3.参考文档 1.match_phrase使用介绍 elasticsearch的match_phrase查询是全文查询,主要用…

目录

1.match_phrase使用介绍

2.规避可能产生的查询问题

解决方式

一.查询和索引分词器一致,即都使用max_word或者都使用smart

二.使用slop增加匹配的容忍度

3.参考文档


1.match_phrase使用介绍

elasticsearch的match_phrase查询是全文查询,主要用于需要的 query 词的顺序与全文匹配中的顺序一致,这是基于 lucene 索引中存储的 term 在 doc 中出现的 position 信息来判断的。

match_phrase 首先会把 query 内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到,一是分词后所有词项都要出现在指定字段中,二是字段中的词项顺序要一致

查询语法结构为

GET /_search
{"query": {"match_phrase": {"field_name": {"query": "query string","slop": 2,"boost": 10.0,"analyzer": "my_analyzer"}}}
}

参数:

  • field_name:指定要匹配的字段名称

  • query:需要查询的 query 文本,它属于 field_name 对应的对象里。

  • slop: match_phrase 是精确匹配,默认(slop 为 0)时,要求分词后所有词项与 doc 中出现的相对顺序位置一样。使用slop可以将精确匹配的条件放宽,slop的意义是需要移动一个 term 多少次才能使得 query 跟 doc 完全匹配,主要有两种情况,一是缺失某些 term,二是 term 一致,但是顺序不一致,都需要 slop来控制。需要注意的是,两个 term 交换位置,slop=2。

  • boost:加权值

  • analyzer:指定的分词分析器

match_phrase 查询的底层实现是 span query,span query 一般不常用。

2.规避可能产生的查询问题

正如前文所介绍的那样,match_phrase查询的第一步就是分词,它的匹配要求所有词都要出现在指定字段并且字段中词项顺序要一致,这就为可能出现的查询问题埋下伏笔

一个典型的场景是,在文本存储索引时,我们使用ik_max_word分词器以希望保存所有可能存在的分词情况,原句为“中华人民共和国国歌”,会得到

中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌

13个term,term中将包含position位置信息

在查询时,改为使用ik_smart分词器,输入查询query“中华人民共和国国歌”,使用match_phrase查询

会惊奇地发现,无法查询到存储原句的文档,明明查询query和文档内容一摸一样,但为什么match_phrase查不出来

其奥妙就在于切换分词器后两种分词模型的term位置不再对应

ik_smart分词器只会有 "中华人民共和国,国歌"两个term,在这种情况下两个term的位置紧挨在一起,而在ik_max_word分词器中,同样的term分别在第一个位置和第13个位置,间隔非常远

因此

GET test_index/_search
{"query": {"match_phrase": {"message": "中华人民共和国国歌","analyzer":"ik_smart"}}
}

查询语句,match_phrase会认为两种分词模型下的term并不匹配,从而无法查出结果

解决方式

解决方法有两种

一.查询和索引分词器一致,即都使用max_word或者都使用smart
GET test_index/_search
{"query": {"match_phrase": {"message": "中华人民共和国国歌","analyzer":"ik_max_word"}}
}

或者不指定会默认使用索引该字段的分词器

GET test_index/_search
{"query": {"match_phrase": {"message": "中华人民共和国国歌"}}
}

都能解决问题

二.使用slop增加匹配的容忍度

slop参数告诉match_phrase查询词条能够相隔多远时仍然将文档视为匹配。我们可以理解为slop参数越大代表match_phrase查询中对分词term之间间隔距离的容忍度越大

在不设置slop参数时,它默认为0,即最严格的匹配,term与term之间不允许有任何的间隔,必须紧挨在一起

在举例的场景中,因为索引的term 中华人民共和国 、国歌位于第1和第13位置,将slop设置为12,也能解决查询不到的问题
 

GET test_index/_search
{"query": {"match_phrase": {"message": "中华人民共和国国歌","analyzer":"ik_smart","slop":12}}
}

3.参考文档

[Match phrase query | Elasticsearch Guide [8.15] | Elastic] https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html

[GitHub - infinilabs/analysis-ik: 🚌 The IK Analysis plugin integrates Lucene IK analyzer into Elasticsearch and OpenSearch, support customized dictionary.] https://github.com/infinilabs/analysis-ik

http://www.hkea.cn/news/691647/

相关文章:

  • 月亮湾设计有限公司网站南宁seo产品优化服务
  • 福田欧曼服务站电话上海高端seo公司
  • 高端网站建设哪家好谷歌seo和百度seo
  • 前端写一个页面多少钱海口网站关键词优化
  • 浦东新区建设局官方网站东莞seo关键词
  • 在百度做橱柜网站进入百度一下官网
  • wordpress调用分类标签站长工具查询seo
  • 网站做全局搜索云南新闻最新消息今天
  • 公司网站推广方案长春seo代理
  • 网站地图怎么样做更利于收录手机百度搜索引擎入口
  • 中国建筑公司网站谷歌浏览器官方app下载
  • 厦门网站建设策划seo网站优化培训找哪些
  • 宝安区住房和建设局官方网站seo搜索引擎优化书籍
  • 省建设厅执业资格注册中心网站2023搜索最多的关键词
  • 本地wordpress上传搜索引擎营销优化策略有哪些
  • html手机网站模板培训心得体会800字
  • 合肥做网站公司哪家好经典的软文广告
  • 网站备案哪个部门北京推广
  • 澳环网站设计公司网站建设方案
  • 云南旅行社网站建设网络推广有多少种方法
  • 龙岗做商城网站建设网络营销战略的内容
  • 网站建设网络公整站排名
  • 南昌购物网站制作软文广告成功案例
  • 鞍山找工作哪个网站最靠谱千度搜索引擎
  • 济南做网站互联网公司英文seo推广
  • 给企业做网站的公司品牌整合营销传播
  • 互联网技术应用学什么杭州优化建筑设计
  • 重庆网站建设要点襄阳seo优化排名
  • 哪个网站用织梦做的seo站长工具查询系统
  • 本地wordpress 上传搜索引擎优化简历