一、概念介绍
全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。
整个分析过程,如下图所示:
二、ES中的分词器
从第一部分内容可以看出:Analyzer(分析器)由Tokenizer(分词器)和Filter(过滤器)组成。
1、ES内置分析器
standard analyzer | standard | standard tokenizer, standard filter, lower case filter, stop filter |
simple analyzer | simple | lower case tokenizer |
stop analyzer | stop | lower case tokenizer, stop filter |
keyword analyzer | keyword | 不分词,内容整体作为一个token(not_analyzed) |
pattern analyzer | whitespace | 正则表达式分词,默认匹配\W+ |
language analyzers | lang | 各种语言 |
snowball analyzer | snowball | standard tokenizer, standard filter, lower case filter, stop filter, snowball filter |
custom analyzer | custom | 一个Tokenizer, 零个或多个Token Filter, 零个或多个Char Filter |
2、ES内置分词器
standard tokenizer | standard | |
edge ngram tokenizer | edgeNGram | |
keyword tokenizer | keyword | 不分词 |
letter analyzer | letter | 按单词分 |
lowercase analyzer | lowercase | letter tokenizer, lower case filter |
ngram analyzers | nGram | |
whitespace analyzer | whitespace | 以空格为分隔符拆分 |
pattern analyzer | pattern | 定义分隔符的正则表达式 |
uax email url analyzer | uax_url_email | 不拆分url和email |
path hierarchy analyzer | path_hierarchy | 处理类似/path/to/somthing 样式的字符串 |
3、ES内置过滤器
(1)ES内置的token filter
standard filter | standard | |
ascii folding filter | asciifolding | |
length filter | length | 去掉太长或者太短的 |
lowercase filter | lowercase | 转成小写 |
ngram filter | nGram | |
edge ngram filter | edgeNGram | |
porter stem filter | porterStem | 波特词干算法 |
shingle filter | shingle | 定义分隔符的正则表达式 |
stop filter | stop | 移除 stop words |
word delimiter filter | word_delimiter | 将一个单词再拆成子分词 |
stemmer token filter | stemmer | |
stemmer override filter | stemmer_override | |
keyword marker filter | keyword_marker | |
keyword repeat filter | keyword_repeat | |
kstem filter | kstem | |
snowball filter | snowball | |
phonetic filter | phonetic | 插件 |
synonym filter | synonyms | 处理同义词 |
compound word filter | dictionary_decompounder, hyphenation_decompounder | 分解复合词 |
reverse filter | reverse | 反转字符串 |
elision filter | elision | 去掉缩略语 |
truncate filter | truncate | 截断字符串 |
unique filter | unique | |
pattern capture filter | pattern_capture | |
pattern replace filte | pattern_replace | 用正则表达式替换 |
trim filter | trim | 去掉空格 |
limit token count filter | limit | 限制token数量 |
hunspell filter | hunspell | 拼写检查 |
common grams filter | common_grams | |
normalization filter | arabic_normalization, persian_normalization |
(2)ES内置的character filter
mapping char filter | mapping | 根据配置的映射关系替换字符 |
html strip char filter | html_strip | 去掉HTML元素 |
pattern replace char filter | pattern_replace | 用正则表达式处理字符串 |
4、自定义分析器
ES允许用户通过配置文件elasticsearch.yml自定义分析器Analyzer,如下:
index:
analysis:
analyzer:
myAnalyzer:
tokenizer: standard
filter: [standard, lowercase, stop]
上面配置信息注册了一个分析器myAnalyzer,在次注册了之后可以在索引或者查询的时候直接使用。该分析器的功能和标准分析器差不多,tokenizer: standard,使用了标准分词器 ;filter: [standard, lowercase, stop],使用了标准过滤器、转小写过滤器和停用词过滤器。
也可以使用第三方分析器,比如IKAnalyzer,详情请参考ElasticSearch安装ik分词插件
http://my.oschina.net/xiaohui249/blog/260993
相关推荐
https://github.com/medcl/elasticsearch-analysis-ik elasticsearch 中文分词器
es中文分词器ikes中文分词器ikes中文分词器ikes中文分词器ikes中文分词器ik
IK中文分词器在Elasticsearch上的使用。原生IK中文分词是从文件系统中读取词典,es-ik本身可扩展成从不同的源读取词典。目前提供从sqlite3数据库中读取。es-ik-plugin-sqlite3使用方法: 1. 在elasticsearch.yml中...
elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip ...
elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0
因为es本身的分词器对中文不是特别友好,所以使用ik分词器,分为 两种 模式,一种是粗 模式,一种是细模式,还希望能帮助到刚刚接触的人
用于elasticsearch7.6.2配套的中文分词器,欢迎大家使用 下面是它的描述,用于elasticsearch7.6.2配套的中文分词器,
elasticsearch的ik中文分词器,安装好elasticsearch后还需安装中文分词器
elasticsearch默认的分词效果有时候并不满足我们的需求,这将介绍elasticsearch安装ik分词器详解
elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...
Elasticsearch 7.6.2 已集成ik分词器 解压后运行bin目录下,elasticsearch.bat文件
elasticsearch拼音分词器,拼音分词器用法同中文分词器用法一样
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!
自定义elasticsearch分词插件,在网上找了一个空格分词的实现,主要看思路,方便大家写自己的分词插件
如果直接使用Elasticsearch的朋友在处理中文... 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。
ik分词器tar包 7.10.2
elasticserach 7.17.4版本的中文 IK分词器
适用于elasticsearch7.17.11版本的分词器插件安装包
如果直接使用Elasticsearch的朋友在处理中文... 这是因为使用了Elasticsearch中默认的标准分词器,这个分词器在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。
elasticsearch-7.0.0版本 ik中文分词器,编译好的文件,亲测成功,2.4.6版本的见在本人其他资源中寻找,免费下载,成功请给好评。