1.analysis 和 analyzer

analysis是指把全文本转换成一系列单词(term/token)的过程,也叫分词。

analysis是通过分词器analyzer来实现的

2.分词

String类型的数据在es中有两种类型:

keyword:

对于存储的数据不会进行分词,需要全文匹配才能,比方数据库存入"我爱中国",那么必须要搜索"我爱中国"才能匹配到该条数据

text:

会分词,先把对象进行分词处理,然后再再存入到es中。比方数据库存入"我爱中国",那么在数据库存入之前会分词可能为"我","爱","中国",那么通过分词后的三个词条都可以匹配到该条数据

ES 内置了许多分词器

Standard Analyzer - 默认分词器,按词切分,小写处理
Simple Analyzer - 按照非字母切分(符号被过滤),小写处理
Stop Analyzer - 小写处理,停用词过滤(the ,a,is)
Whitespace Analyzer - 按照空格切分,不转小写
Keyword Analyzer - 不分词,直接将输入当做输出
Pattern Analyzer - 正则表达式,默认 \W+
Language - 提供了 30 多种常见语言的分词器

ik_max_word和 ik_smart介绍

IK分词器有两种分词模式:ik_max_word和ik_smart模式。

1、ik_max_word

会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。

2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

测试两种分词模式的效果:

发:post localhost:9200/_analyze
测试ik_max_word
{“text”:“中华人民共和国人民大会堂”,“analyzer”:“ik_max_word” }
测试ik_smart
{“text”:“中华人民共和国人民大会堂”,“analyzer”:“ik_smart” }

对于一些特定的情况,es内置的分词器无法完全符合我们业务的时候我们可以自己去创建分词器,并且制定分词规则,代码如下:

//设置分词器,一定需要在没有所有的时候设置
XContentBuilder settingsBuilder = XContentFactory.jsonBuilder().startObject().startObject("analysis").startObject("analyzer").startObject("comma_analyzer").field("type", "pattern").field("pattern", ",") //将分词器规则定义为按照","进行分词.endObject().endObject().endObject().endObject();//创建索引并且添加配置信息
CreateIndexResponse indexResponse = client.admin().indices().prepareCreate(indexName).setSettings(settingsBuilder).get();

es自定义分词器和分词规则相关推荐

  1. CentOS安装Elasticsearch_IK分词器拼音分词器_部署kibana_部署es集群

    CentOS安装Elasticsearch_IK分词器_部署kibana_部署es集群 一.部署单点es ①:创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联.这里先 ...

  2. 本地elasticsearch中文分词器 ik分词器安装及使用

    ElasticSearch 内置了分词器,如标准分词器.简单分词器.空白词器等.但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词. ik分词器就是一个标准的中文分词器.它可以根据 ...

  3. ES自定义Analyzer扩展IK分词

    IPS产品关键词搜索需求要对英文标题.品牌(英文).规格属性(英文).产品型号.描述属性.商品特征.关键搜索词等字段进行模糊匹配搜索 前期由于拿不到数据也不清楚具体数据是什么样的,并且线上集群也没有安 ...

  4. docker使用小记——docker安装es+ik分词器+拼音分词器+kibana

    一.docker安装:Windows Docker 安装 | 菜鸟教程 二.docker换镜像源 修改或新增 /etc/docker/daemon.json vi /etc/docker/daemon ...

  5. ElasticSearch中文分词器-IK分词器的使用

    IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze {"text":"农业银行& ...

  6. 分词器——ik——分词算法

    IK Analyzer 3.0特性 采用了特有的"正向迭代最细粒度切分算法",具有80万字/秒的高速处理能力 采用了多子处理器分析模式,支持:英文字母(IP地址.Email.URL ...

  7. Elasticsearch之分词器查询分词效果

    0.引言 Elasticsearch之分词器中文的我们一般使用IK,如果没有指定分词器.默认使用的是standard分词. IK分词能将中文分成词组: standard分词则会将每个中文分成一个单个的 ...

  8. 使用Docker快速安装部署ES和Kibana并配置IK中文分词器以及自定义分词拓展词库

    使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境 如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker 有了Docker环境后, ...

  9. ElasticSearch入门:ES分词器与自定义分词器

    ES入门:ES分词器与自定义分词器 分词器的简单介绍 不同分词器的效果对比 自定义分词器的应用 分词器的简单介绍 分词器是es中的一个组件,通俗意义上理解,就是将一段文本按照一定的逻辑,分析成多个词语 ...

最新文章

  1. js 获取当前时间 随记
  2. python集合类型的四种操作符_python:集合【全用法】
  3. java启动100线程_Java启动新线程的几种方式(Runnable、Callable、CompletableFuture)
  4. Dockerfile----ubuntu-java
  5. ATI显卡开启fedora9的3d后果的一些条记
  6. ef6 mysql_VS2015 + EF6连接MYSQL5.6
  7. java参数校验:ValidatorUtils校验框架工具类的使用
  8. 英伟达斥资 400 亿美元收购 Arm,欲向 Arm 员工发 15 亿美元股票
  9. 浅谈C语言字符串结束符'\0'
  10. Python高性能编程
  11. php 上传图片转base64格式,PHP实现本地图片转base64格式并上传
  12. 安卓脚本用什么写_什么是抖音脚本?脚本有什么用?
  13. 黄仁勋专访:经济不景气又怎样?未来元宇宙将「全民免费」!
  14. Linux kali系统使用fcrackzip/rarcrack破解zip/rar(或者zip 7z)类型的加密压缩文件
  15. chariot iperf使用_ixchariot吞吐量测试
  16. 中关村科技企业融资缺口700亿 商业银行垂涎
  17. JAVA——JSch
  18. 来自Facebook的KTLS Kernel SSL/TLS 原理和实例
  19. 【托业】【金山词霸】21-42
  20. Python OJ输入输出

热门文章

  1. cba比赛比分预测_CBA第17轮比赛结果预测!
  2. Angry Birds和广告系统泄露个人信息——FireEye对Angry Birds的分析
  3. 使用Windows自带命令diskpart管理分区
  4. 408计算机考研--数据结构--2020年统考真题(C语言)
  5. 《统计学习方法》—— 5.决策树(Python实现)
  6. CTO章庆元:金山WPS开源是件好事
  7. Oracle rac 日常维护
  8. 列表排序方法sort()的key参数取值,以及lambda匿名函数
  9. ATT汇编中的高级数学方法
  10. C#委托与Lambda表达式