一、normalization(文档正常化)
normalization主要是用来提高查询的命中率的 我们知道es会将一段文字进行分词 形成倒排索引后存储 如下面的这句话
Mr. Ma is an excellent teacher. I‘m glad to meet him
如果搜索的关键字为Teacher 由于原文档中并没有Teacher这个单词 所以正常情况该搜索是无法命中的 所以这个时候就需要normalization来处理。normalization简单的来说就是将搜索条件中的一些不规范的词项进行规范化如将搜索条件中的大写字母转成小写字母 对搜索条件中的错误单词进行校正、去掉单词中的复数形式、去掉语气助词等等。
示例
二、Character Filter(字符过滤器)
es的字符过滤器有三种 html_strip、mapping、pattern_replace
html_strip (HTML标签过滤器)
html_strip 这种字符过滤器用于处理文本中的html标签 html_strip还可以通过属性指定哪些html需要保留 通过escaped_tags属性来设置要保留哪些html标签
Mapping字符过滤器
mapping过滤器主要是将某些特定的词汇做一个转换
pattern_replace (正则字符过滤器)
备注上面几张截图的标注有问题 analyzer是分析器 tokenizer才是分词器
三 分词器 tokenizer
默认的分词器是standard 而中文分词器 一般用ik分词器
四 自定义分词器
这里说的自定义分词器其实是指的自定义分析器
五 中文分词器
中文分词器一般用ik分词器
#ik分词器github地址 找到对应的版本下载
https://github.com/medcl/elasticsearch-analysis-ik
安装ik分词器
1、在es安装目录的home目录下找到对应的plugins目录
2、cd到plugins目录 然后解压缩刚刚下载的ik分词器的文件夹 并重命名为ik
3、重启es ik分词器安装完成
ik分词器自定义扩展字典
真实的业务场景中原生的ik分词器的字典中不包含某些特定的词汇,这个时候可以通过修改ik分词器的配置 自定义扩展字典。
ik分词器热更新方法
上面的方式虽然能够扩展字典,但是每次更新自定义词典都需要重启es, ik分词目前支持热更新