内置分词器
ElasticSearch的核心功能是数据检索,首先通过减速将文档写入ES,再进行查询分析。
- 词条化:分词器将输入的文本转化为一个一个词条流
- 过滤: 词挺流过滤器会从词条中去除不相干的词条(嗯,啊,的,呢);另外还有同义词过滤器,小写过滤器等。
ElasticSearch中内置了多种分词器可以提供
内置分词器:
分词器 | 做用 |
---|---|
Standard Analyzer | 标准分词器,适用于英语等 |
Simple Analyzer | 简单分词器,基于非字母字符进行分词,单词会被转换成小写字母 |
Whitespace Analyzer | 空格分词器,按照空格进行分词切分 |
Stop Analyzer | 类似于简单的分期,但是又增加了停用词的功能 |
Keyword Analyzer | 关键分词器,输入文本等于输出文本 |
Pattern Analyzer | 利用正则表达式对文本进行切分,支持停用词 |
Language Analyzer | 针对特定的语言进行分词器 |
Figerprint Analyzer | 指纹分析仪分词器,通过创建标记进行重复检测 |
中文分词器
使用elasticsearch-analysis-ik 这个是es的一个第三方插件,代码再github上托管
仓库地址
使用方式:
- 第一
- 找到官网先下载下来
- 解压
- es/plugins目录下,新建ik目录 并将压缩后的文件拷贝到ik目录下
- 重启es服务
测试使用:
创建索引 索引名为 test
在test索引中进行测试分词
自定义扩展词库
-
本地自定义
在es/plugins/ik/config 目录下 新建 ext.dic文件(文件任意命名) 在该文件中可以配置自定义词库。
如果有多个词 换行写入新词即可
然后再 配置分词器 es\plugins\ik\config\IKAnalyzer.cfg.xml 中配置扩展词典位置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
需要重启es
- 远程词库
远程词库 支持热更新 不用重启 es 即可生效
热更新只需要提供一个接口,接口返回扩展词 即可。
具体实现 : -
创建一个springboot项目 引入web依赖即可。
然后再次配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://localhost:8080/ext.dic</entry>
</properties>
然后启动 springboot项目
就可实现热更新
热更新 ,主要 是响应头的Last-Modified或者Etag字段发生变化 ik就会自动重新记载远程扩展词典