六、分词器


6.1 分词器介绍

Analysis 和 Analyzer

Analysis:文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词(Analyzer)。Analysis是通过Analyzer来实现的。分词就是将文档通过Analyzer分成一个一个的Term,每一个Term都指向包含这个Term的文档

Analyzer 组成

注意】:在ES中默认使用标准分词器:StandardAnalyzer特点:中文单字分词/单词分词
我是中国人this is a good man---->analyzer—>我 是 中 国 人 this is a good man

  • 分析器(analyzer)都由三种构件组成的:character filterstokenizerstoken filters

    • Character Filter 字符过滤器

      • 在一段文本进行分词之前,先进行预处理,比如说最常见的就是,过滤html标签(hello–> hello),&–> and,(I&you–>I and you)
    • Tokenizers 分词器
      • 英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词
    • Token Filters Token过滤器
      • 将切分的单词进行加工。大小写转换(例将"Quick"转为小写),去掉停用词(例如停用词像"a"、“and”、“the"等等),加入同义词(例如同义词像"jump"和"leap”)

注意

  • 三者顺序:Character Filter—>Tokenizers—>Token Filter
  • 三者个数:Character Filter(0个或多个)+ Tokenizers + Token Filters(0个或多个)

内置分词器

  • Standard Analyzer:默认分词器,英文按单词切分,并小写处理
  • Simple Analyzer:按照单词切分(符号被过滤),小写处理
  • Stop Analyzer:小写处理,停用词过滤(the、a、is…)
  • Whitespace Analyzer:按照空格切分,不转小写
  • Keyword Analyzer:不分词,直接将输入当作输出

6.2 内置分词器测试

  • Standard Analyzer 标准分词器

    • 特点:按照单词分词,英文统一转为小写,过滤标点符号,中文单子分词
POST /_analyze
{"analyzer": "standard","text": "我是中国人, this is a good Man"
}

  • Simple Analyzer 简单分词器

    • 特点:按照单词分词,英文统一转为小写,过滤标点符号,中文不分词(按照"空格"或标点符号分词)
POST /_analyze
{"analyzer": "simple","text": "我是,中国人, this is a good Man"
}

  • WhitespaceAnalyzer 空格分词器

    • 特点:中文、英文按照空格分词,英文不会转为小写,不去掉标点符号
POST /_analyze
{"analyzer": "whitespace","text": "我是中国人, this is a good Man"
}

  • Keyword Analyzer 关键词分词器

    • 特点:将输入的内容当作一个关键词
POST /_analyze
{"analyzer": "keyword","text": "我是中国人, this is a good Man"
}

6.3 创建索引设置分词

# 创建时,默认使用标准分词器 "analyzer": "standard"
PUT /analyzer
{"settings": {},"mappings": {"properties": {"title": {"type": "text","analyzer": "standard"}}}
}

6.4 中文分词器

在ES中支持中文分词器非常多,如smartCN、IK等,这里推荐使用IK分词器

安装IK

github网站:https://github.com/medcl/elasticsearch-analysis-ik

注意

  • IK分词器的版本要与安装ES的版本一致
  • Docker容器运行ES安装插件目录为/usr/share/elasticsearch/plugins
# 1.下载对应版本到本地
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip# 2.解压(建议本地下载之后,手动解压,再使用xftp将解压后的文件上传到linux)
unzip elasticsearch-analysis-ik-6.2.4.zip ik-7.14.0 (如果没有unzip命令,先使用"yum install -y unzip"进行安装)# 3.移动到es安装目录的plugis目录中(不推荐使用,如果是手动解压,可以忽略此步骤往下看)
mv ik-7.14.0 elasticsearch-analysis-ik-6.2.4/plugins/

使用数据卷挂载的方式

# 1.先停止对应docker容器
docker-compose down# 2.修改docker-compose.yml文件,如下图所示
# 将当前的路径下的ik-7.14.0文件映射到容器内部中的/usr/share/elasticsearch/plugins/ik-7.14.0文件,同时删除volumes下的plugin


############################################### 内容如下 ###############################################
version: "3.8"
volumes:data:config:
networks:es:
services:elasticsearch:image: elasticsearch:7.14.0ports:- "9200:9200"- "9300:9300"networks:- "es"environment:- "discovery.type=single-node"- "ES_JAVA_OPTS=-Xms512m -Xmx512m"volumes:- data:/usr/share/elasticsearch/data- config:/usr/share/elasticsearch/config- ./ik-7.14.0:/usr/share/elasticsearch/plugins/ik-7.14.0kibana:image: kibana:7.14.0ports:- "5601:5601"networks:- "es"volumes:- ./kibana.yml:/usr/share/kibana/config/kibana.yml###############################################  ###############################################

6.5 IK使用

IK有两种颗粒度的拆分

  • ik_smart:会做粗粒度的拆分
  • ik_max_word:会将文本做最细粒度的拆分

ik_smart测试

POST /_analyze
{"analyzer": "ik_smart","text": "中华人民共和国国歌"
}

ik_max_word测试

POST /_analyze
{"analyzer": "ik_max_word","text": "中华人民共和国国歌"
}

下一篇文章《ElasticSearch - 扩展词、停用词配置》

ElasticSearch(六)【分词器】相关推荐

  1. Elasticsearch之分词器的工作流程

    前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch的分词器的一般工作流程: 1.切分关键词 2.去除停用词 3.对于英文单词,把所有字母转为小写(搜索时不区分 ...

  2. ElasticSearch IK 分词器快速上手

    简介: ElasticSearch IK 分词器快速上手 一.安装 IK 分词器 1.分配伪终端 我的 ElasticSearch 是使用 Docker 安装的,所以先给容器分配一个伪终端.之后就可以 ...

  3. 【Es】ElasticSearch 自定义分词器

    1.分词器 转载:https://blog.csdn.net/gwd1154978352/article/details/83343933 分词器首先看文章:[Elasticsearch]Elasti ...

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

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

  5. Elasticsearch 默认分词器和中分分词器之间的比较及使用方法

    首发地址:http://www.54tianzhisheng.cn/2017/09/07/Elasticsearch-analyzers/ 介绍:ElasticSearch 是一个基于 Lucene ...

  6. ElasticSearch——IK分词器的下载及使用

    ElasticSearch--IK分词器的下载及使用 1.什么是IK分词器 ElasticSearch 几种常用分词器如下: 分词器 分词方式 StandardAnalyzer 单字分词 CJKAna ...

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

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

  8. Elasticsearch 系列文章(一):Elasticsearch 默认分词器和中分分词器之间的比较及使用方法

    介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...

  9. ElasticSearch IK分词器安装

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch 默认是带分词器了,对英文是按固定的英文的空格,或者"-"进行分词,但是对中文分 ...

  10. elastic ik分词搜索_php环境下使用elasticSearch+ik分词器进行全文搜索

    php中文网最新课程 每日17点准时技术干货分享 首先需要说明的一点是,如果需要启用ik分词器,那么分词器的版本必须与es版本一致,即6.3.0的分词器需要同样6.3.0版本的es支持. 安装java ...

最新文章

  1. python自动华 (十四)
  2. Python正则表达式re模块简明笔记
  3. python运行py文件参数错误_Pycharm运行加载文本出现错误的解决方法
  4. xshell 7 官网免费下载
  5. 收藏 | 49 个 Python 学习资源
  6. .Net Core下基于Emit的打造AOP
  7. JMETER 用户自定义的变量
  8. Caffe网络结构实现
  9. 自然语言处理——语言模型(二)
  10. Mybatis 开发神器:Fast MyBatis,太强了!
  11. winform通过WebClient调用api接口
  12. 51单片机全自动锂电池容量电量检测放电电流电压ACS712 ADC0832
  13. 内存颗粒位宽和容量_内存颗粒有没有多与少的区别啊?或者说比较多的颗粒比少的颗粒好些?...
  14. 世界读书日 | 技术人不要错过的好书(IT前沿技术)
  15. 老客户营销新招 如何拯救店铺复购率
  16. 设置了position: fixed; 并且能够左右滚动 #html #Css
  17. spring boot网上购物系统毕业设计源码311236
  18. 做好工作交接对自己多重要,说到心坎了
  19. 2020 icpc 沈阳
  20. JavaScript的NaN为什么不等于NaN

热门文章

  1. IndexOf判断字符串是否存在
  2. OneNote不用NoteHighlight怎么做出好看的代码块
  3. 改变easyui的messager.progress进度条的样式
  4. 张一鸣:给面试候选人的 5 点建议
  5. [PTA]习题7-3 判断上三角矩阵
  6. 使用高效的MCUs开发强大的事件驱动视频监控系统
  7. iOS 8.4.1完美越狱工具发布:老设备福音
  8. 8647服务器装系统,IBM3650服务器系统安装
  9. MySQL BLOB 类型介绍
  10. JavaBeans的调用