es - elasticsearch 内建分析器 自定义分析器 - 分类总结 - 1

397 阅读3分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

es内建分析器的学习告一段落,今天做一个总结,希望对大家有所帮助 :

内建分析器 :
    1. standard    : 标准分析器,根据绝大部分标点分析,并转为小写,中文以字分
    2. simple      : 简单分析器,根据所有标点分析,并转为小写
    3. whitespace  : 空格分析器,根据空格分析
    4. stop        : 停用词分析器,根据所有标点分析,并转为小写,过滤停用词
    5. keyword     : 关键词分析器,不分
    6. pattern     : 正则分析器,默认根据非字母分析,并转为小写
    7. language    : 各种语言分析器
    8. fingerprint : 指纹分析器,用于辅助聚类
    
自定义分析器 : character filter -> tokenizer -> token filter       
1. Character filters :
    1. 作用          : 字符过滤
    2. 数量          : 0或多个
    3. 内建字符过滤器 : 
        1. HTML Strip Character filter      : 去除html标签
        2. Mapping Character filter         : 映射替换
        3. Pattern Replace Character filter : 正则替换
2. Tokenizer :
    1. 作用       : 分词 
    2. 数量       : 有且只有一个
    3. 内建分词器 :
        1. 完整分词 :
            1. Standard      : 按绝大多数标点分词,中文按字分词
            2. Letter        : 按所有标点分词
            3. Lowercase     : 按所有标点分词并转为小写
            4. whitespace    : 按空格分词
            5. UAX URL Email : 按绝大多数标点分词并能识别url和email
            6. Classic       : 按绝大多数标点分词,适用于英语,可以识别缩写、公司名、email、host
            7. Thai          : 泰语分词器
        2. 切词 :
            1. N-Gram        : 根据设置的长度依次切分
            2. Edge N-Gram   : 以第一个字符开头的不同长度的切分
        3. 文本 :
            1. Keyword              : 不分词,整体作为一个词
            2. Pattern              : 根据正则分词
            3. Simple Pattern       : 根据正则匹配分词
            4. Char Group           : 根据指定字符分词
            5. Simple Pattern split : 根据正则分词
            6. Path hierarchy       : 根据路径拆分

3. token filter :
    1. 作用          : 分词过滤
    2. 数量          : 0或多个
    3. 内建分词过滤器 :
        1. 词干提取 :
            1. hunspell
            2. kstem
            3. snowball
            4. stemmer
            5. porter stem
        2. 拼词 :
            1. common_grams : 指定词与相邻的词拼接,用于上下文相关的通用词,提高查询的准确性
            2. fingerprint  : 排序,去重
            3. shingle      : 指定相邻多个分词拼接为一个分词
        3. 切分 :
            1. cjk_bigram : 中日韩以2字长度切分 
            2. edge_ngram : 以首字符开头切分
            3. ngram      : 根据长度切分
            4. truncate   : 超过指定长度则且分为指定长度
        4. 转换 :
            1. apostrophe       : 删除撇号后面的所有字符
            2. asciifolding     : 转为ascii
            3. cjk_width        : 中日韩标准化
            4. classic          : classic tokenizer的补充
            5. condition        : 条件过滤
            6. decimal digit    : 将特殊语言的数字转为0-9
            7. flatten graph    : 平铺
            8. lowercase        : 将分词转为小写
            9. min_hash         : 最小hash,用于文档相似度查询
            10. normalization   : 语言规范化
            11. pattern replace : 正则替换
            12. reverse         : 分词反转
            13. trim            : 去除分词前后空格,适合keyword分词
            14. uppercase       : 将分词转为大写
        5. 过滤 :
            1. delimited payload : 根据指定的分隔符将分词流分离为分词和有效负载
            2. elision           : 默认过滤法语元音
            3. length            : 过滤不符合指定长度的词
            4. limit             : 过滤超过一定数量的分词
            5. pattern_capture   : 根据正则过滤
            6. predicate scripts : 根据脚本过滤
            7. remove duplicate  : 去除同一位置重复的词
            8. unique            : 去除重复的词
        6. 字典 :
            1. dictionary decompounder  : 额外展示匹配的词
            2. hyphenation decompounder : 额外展示匹配的词
            3. keep types : 保留指定类型的词
            4. keep words : 保留指定词
            5. keyword marker : 指定为关键词,不进行词干提取
            6. keyword repeat : 额外显示分词的keyword版本
        7. 集成 :
            1. multiplexer : 集成多种过滤器
        8. 分词 :
            1. word delimiter        : keyword 分词
            2. word delimiter graph  : keyword 分词