0.简介
文本分析是指将文本进行特定的过滤、分词和转换的过程。
在es进行倒排索引和进行文本搜索时,都可以预先对文本进行文本分析,经过文本分析后的结果会最后被建进倒排索引或者被发送进行真正的查询。
上图是文本分析器的可视化图,一个分析器包括字符过滤器、分词器和分词过滤器。
如下是定义一个定制化分析器的例子,analyzer内定义了分析器用到的字符过滤器、分词器和分词过滤器。
用如下配置的分析器对文本 "I'm delighted about it :(" 进行分析,可以得到以下分词:
[ I'm, delighted, about, it, _sad_ ]。
{ "settings": { "analysis": { //定制化分析器 "analyzer": { "my_custom_analyzer": { "type": "custom", "char_filter": [ "emoticons" ], "tokenizer": "punctuation", "filter": [ "lowercase", "english_stop" ] } }, //自定义分词器 "tokenizer": { "punctuation": { "type": "pattern", //遇到以下的字符,则分词 "pattern": "[ .,!?]" } }, //字符过滤器 "char_filter": { "emoticons": { "type": "mapping", //将图形符号翻译为其他映射 "mappings": [ ":) => _happy_", ":( => _sad_" ] } }, //分词过滤器 "filter": { "english_stop": { //定义根据停止次过滤,_english_为默认的英语停止词集 "type": "stop", "stopwords": "_english_" } } } } } |
1.索引分析器和检索分析器设置
如简介中所述,分析器可以用在文本建进倒排索引之前,也可以用于检索文档之时。
1.1索引分析器
如下示例为在构建索引的mapping时,为字段tile设置standard分析器。standard分析器为es默认的分析器,它综合了对大多欧洲语言来说,合理的默认模块。包括标准分词器(standard tokenizer, 见analysis-standard-tokenizer), 标准分词过滤器