一、概念介绍
全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干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
相关推荐
**Elasticsearch中文分词器IK** Elasticsearch(ES)是流行的全文搜索引擎,它基于Lucene库构建,提供了一个分布式、RESTful风格的搜索和分析引擎服务。然而,对于中文这种复杂的语言,Elasticsearch默认的分词器...
elasticsearch中文分词器
本文将深入探讨Elasticsearch中的IK分词器,它是一款专门为ES设计的、性能出色的中文分词工具。 **IK分词器简介** IK(Intelligent Chinese)分词器是开源的Java实现的中文分词库,最初由刘海洋创建,后由Wang ...
在Elasticsearch中使用IK分词器,首先需要将"elasticsearch-analysis-ik-7.6.2.jar"文件放到Elasticsearch的plugins目录下。然后,通过Elasticsearch的命令行工具或配置文件启用插件。配置通常涉及以下步骤: 1. ...
** Elasticsearch (ES) 中文分词器:IK 分词器详解 ** Elasticsearch(ES)作为一款强大的全文搜索引擎,其内置的分词器在处理英文文本时表现出色,但在处理中文这种复杂的语言结构时,可能无法满足需求。为了解决...
IK中文分词器在Elasticsearch上的使用。原生IK中文分词是从文件系统中读取词典,es-ik本身可扩展成从不同的源读取词典。目前提供从sqlite3数据库中读取。es-ik-plugin-sqlite3使用方法: 1. 在elasticsearch.yml中...
《Elasticsearch拼音分词器7.4.0在大数据全文检索中的应用》 Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于大数据领域的全文检索。它以其高可扩展性、实时性能以及丰富的分析能力著称。在中文环境...
elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip elasticsearch ik 分词器 zip ...
**Elasticsearch 7.17.4 版本中的中文 IK 分词器** Elasticsearch 是一个流行的、开源的全文搜索引擎,它基于 Lucene 库,并提供了分布式、实时、可扩展的搜索和分析功能。在处理中文文本时,一个合适的分词器是至...
4. **配置与测试**:在Elasticsearch的配置文件`elasticsearch.yml`中设置分词器,然后通过Elasticsearch的分析器接口进行测试,验证分词效果。 **应用场景** IK分词器广泛应用于电商、新闻、社交媒体等领域,帮助...
将 IK 分词器集成到 Elasticsearch 中,Elasticsearch-analysis-ik 插件具备以下特性: 1. **无缝集成**:与 Elasticsearch API 完美融合,安装后即可使用。 2. **配置灵活**:支持通过配置文件调整分词策略,如...
它提供了多种内置分词器来处理文本数据,但在实际应用过程中,由于中文语言的复杂性,Elasticsearch 默认提供的分词器往往不能很好地满足中文分词的需求。因此,通常需要安装第三方的中文分词器插件来提高中文处理...
**Elasticsearch与IK中文分词器** Elasticsearch(ES)是一款强大的开源搜索引擎,它基于Lucene构建,提供实时、分布式、可扩展的搜索和分析能力。在处理中文文档时,由于中文句子中词语之间没有明显的分隔符,因此...
**Elasticsearch分词器** 在Elasticsearch中,分词器(Analyzer)是将输入文本转换为可被搜索的Token流的关键组件。默认的分词器可能不适用于所有语言,尤其是中文这种有着独特分词规则的语言。因此,为了实现有效...
elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...
Elasticsearch(简称ES)作为一个强大的全文搜索引擎,提供了多种分词器,其中包括针对中文环境的拼音分词器。本文将深入探讨Elasticsearch中的拼音分词器及其用法。 ### 1. Elasticsearch与分词器 Elasticsearch ...
要在 Elasticsearch 7.0.0 中使用 IK 分词器,首先需要将分词器的插件包下载并安装到 Elasticsearch 的 plugins 目录下。在提供的压缩包中,包含了编译好的 IK 插件,可以直接使用,无需自行编译。 2. **配置IK...
分词器在 Elasticsearch 中扮演着核心角色,因为它们负责将输入的文本分解为可索引的单元——词语。Elasticsearch 内置了多种分词器,如标准分词器(Standard Analyzer)、关键词分词器(Keyword Analyzer)和中文...
在Elasticsearch中,分词器的作用至关重要,它负责将用户输入的文本进行词汇切分,以便进行后续的搜索和分析操作。IK分词器以其高效、灵活和全面的特性,被广泛应用于Elasticsearch的中文处理场景。 **版本信息** ...
在本文中,我们将探讨如何利用Elasticsearch的IK分词器并对其进行源码改造,以实现热词库的动态更新,特别是通过MySQL数据库进行热词和停用词的定时更新。首先,我们要了解IK分词器的几种常用词库配置方式。 **0. ...