您的位置:首页 > 其它

ES中的分词器

2016-03-10 16:05 190 查看
一、概念介绍
    全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)
整个分析过程,如下图所示:



二、ES中的分词器
       从第一部分内容可以看出:Analyzer(分析器)由Tokenizer(分词器)和Filter(过滤器)组成。
       1、ES内置分析器              
analyzer
logical name
description
standard analyzerstandardstandard tokenizer, standard filter, lower case filter, stop filter
simple analyzersimplelower case tokenizer
stop analyzerstoplower case tokenizer, stop filter
keyword analyzerkeyword不分词,内容整体作为一个token(not_analyzed)
pattern analyzerwhitespace正则表达式分词,默认匹配\W+
language analyzerslang各种语言
snowball analyzersnowballstandard tokenizer, standard filter, lower case filter, stop filter, snowball filter
custom analyzercustom一个Tokenizer, 零个或多个Token Filter, 零个或多个Char Filter
 
       2、ES内置分词器
tokenizer
logical name
description
standard tokenizerstandard 
edge ngram tokenizeredgeNGram 
keyword tokenizerkeyword不分词
letter analyzerletter按单词分
lowercase analyzerlowercaseletter tokenizer, lower case filter
ngram analyzersnGram 
whitespace analyzerwhitespace以空格为分隔符拆分
pattern analyzerpattern定义分隔符的正则表达式
uax email url analyzeruax_url_email不拆分url和email
path hierarchy analyzerpath_hierarchy处理类似
/path/to/somthing
样式的字符串
 
       3、ES内置过滤器
        (1)ES内置的token filter
token filter
logical name
description
standard filterstandard 
ascii folding filterasciifolding 
length filterlength去掉太长或者太短的
lowercase filterlowercase转成小写
ngram filternGram 
edge ngram filteredgeNGram 
porter stem filterporterStem波特词干算法
shingle filtershingle定义分隔符的正则表达式
stop filterstop移除 stop words
word delimiter filterword_delimiter将一个单词再拆成子分词
stemmer token filterstemmer 
stemmer override filterstemmer_override 
keyword marker filterkeyword_marker 
keyword repeat filterkeyword_repeat 
kstem filterkstem 
snowball filtersnowball 
phonetic filterphonetic插件
synonym filtersynonyms处理同义词
compound word filterdictionary_decompounder, hyphenation_decompounder分解复合词
reverse filterreverse反转字符串
elision filterelision去掉缩略语
truncate filtertruncate截断字符串
unique filterunique 
pattern capture filterpattern_capture 
pattern replace filtepattern_replace用正则表达式替换
trim filtertrim去掉空格
limit token count filterlimit限制token数量
hunspell filterhunspell拼写检查
common grams filtercommon_grams 
normalization filterarabic_normalization, persian_normalization 
         (2)ES内置的character filter   
character filter
logical name
description
mapping char filtermapping根据配置的映射关系替换字符
html strip char filterhtml_strip去掉HTML元素
pattern replace char filterpattern_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: