首页 > 代码库 > ES0.2 Analysis和Analyzer

ES0.2 Analysis和Analyzer

Analysis 和Analyzer

analysis:

1,对文本分词,分成适合做倒排索引的词语。

2,对词语做标准化(normalizing),比如统一大小写、缩写转换等。这样做的目的是为了提升可搜索的能力。

Analyzer:

Analyzer对document做分析(analysis)。一个Analyzer包含三部分:

  • character filter:过滤器。它的作用是在分词之前整理文本,比如去掉html标签、转换&为and等。
  • tokenizer:分词器。把文本分成可以组织倒排索引的词组。
  • token filter:分词过滤。它的作用包括:转换大小写、删除停词、增加对应的同义词。

 

Build-in Analyzer:

Standard Analyzer:

标准分词,它根据字(word)边界分词,并且会滤除大部分标点符号。最后它会把分好的词转成小写。

Simple Analyzer:

只要遇到不是字母的字符时就分词,并且把词语小写化。

Whitespace Analyzer:

根据空白来分词,它不会小写化词语。

 

n-gram Analyzer:

n-gram分词可以用于前后模糊的查询方式,既可以用于查找也可以用于实现搜索引擎的自动补全功能。这是因为n-gram会把类似“ABCD”的词分成:AB、ABC、ABCD、BC、BCD、CD。

如果采用n-gram分词来建立倒排索引会很大程度上碰着索引大小,如果只是用在前缀补全上可以选择edge n-gram。

ES内置了n-gram的tokenizer,可以如下配置实现n-gram Analyzer:

"settings" : {
        "analysis" : {
            "analyzer" : {
                "ngram_2_10" : {
                    "tokenizer" : "ngram_2_10_tokenizer"
                }
            },
            "tokenizer" : {
                "ngram_2_10_tokenizer" : {
                    "type" : "nGram",
                    "min_gram" : "2",
                    "max_gram" : "10",
                    "token_chars": [ "letter", "digit" ]
                }
            }
        }
    }



ES0.2 Analysis和Analyzer