概述

  • 文本分析
  • 把全文本转换成一系列单词的过程,也叫分词
  • 是通过分词器(analyzer)实现的。
    • Elasticsearch内置了分词器,也可指定外部的分词器
  • 除了再数据写入的时候需要转换词条,匹配Query语句时也需要相同的分析器对查询语句进行分析。

    API

  • 可以直接调用分词的api,查看指定分词器如何分词你的文本。

    直接指定Analyzer进行分词

    1. Get /_analyze
    2. {
    3. "analyzer": "standard",
    4. "text": "hello world"
    5. }

    指定索引的字段进行测试

    POST indexName/_analyze
    {
    "field": "title",
    "text": "hello world"
    }
    

    自定义分词器进行过滤

    POST /_analyze
    {
    "tokenizer": "standard",
    "filter": ["lowercase"],
    "text": "Hello world"
    }
    

    组成部分

    Character Filters

  • 针对原始文本的处理,比如去除掉一些html标签

    Tokenizer

  • 按照规则切分为单词。

    Token Fileters

  • 将切分的单词进行加工,小写、删除stopwards、增加同义词

    Elasticsearch内置的分词器

    Standard Analyzer

  • 默认分词器,按词切分,小写处理

    Simple Analyzer

  • 按照非字母切分(就是所有非字母的字符都会被去除掉),小写处理

    Stop Analyzer

  • 小写处理,停用词过滤(the,a,is之类的)

  • 相比Standard Analyzer多了停用词的过滤

    Whitespace Analyzer

  • 按照空格切分,不转小写

    Keyward Analyzer

  • 不分词,直接将输入当作输出

    Patter Analyzer

  • 正则表达式,默认\W+(按非字母的符号分隔)

    Language

  • 提供了30多种常见语言的分词器

    Customer Analyzer

  • 自定义分词器