zoukankan      html  css  js  c++  java
  • Elasticsearch之Analysis(分析器)

    1.standard analyzer 标准分析器

      由以下使用分词器和分词过滤器组成

    PUT my_index
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "my_analyzer": {
              "tokenizer": "my_tokenizer"
            }
          },
          "tokenizer": {
            "my_tokenizer": {
              "type": "standard",
              "max_token_length": 5
            }
          }
        }
      }
    }
    POST _analyze
    {
      "analyzer": "standard",
      "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
    }

    分词后的结果;

    [ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]

     自动小写化分词,默认不适用停用词,可配置三个参数

    (1)单个词最大长度(max_token_length 默认255,超过则按照255切分)

    (2)停用词(stopwords   即配置过滤词如the to等  默认为_none_)

    (3)停用词文件路径(stopwords_path   默认没配)

       修改配置,需新建一个分析器,如下

    PUT my_index
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "my_standard_analyzer": {
              "type": "standard",
              "max_token_length": 10,
              "stopwords": "_english_"
            }
          }
        }
      }
    }

     通过以上配置,在my_index中新增了一个my_standard_analyzer分析器,之后字段定义可直接使用此分析器。

       stopwords支持一些国家的语言进行分词,_english_为标准英文单词分词,支持如下,不支持中文。

      _arabic_, _armenian_, _basque_, _bengali_, _brazilian_, _bulgarian_, _catalan_, _czech_, _danish_, _dutch_, _english_, _finnish_, _french_, _galician_, _german_, _greek_, _hindi_, _hungarian_, _indonesian_, _irish_, _italian_, _latvian_, _norwegian_, _persian_, _portuguese_, _romanian_, _russian_, _sorani_, _spanish_, _swedish_, _thai_, _turkish_

      还可以通过如下配置该分析器具体过滤的词

    "stopwords": ["and", "is", "the"]

    使用当前配置分词结果如下  

    [ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]

    2.simple analyzer 简单分析器
    由以下使用分词器组成

    Lower Case Tokenizer
    只支持自动小写化词,不支持配置。

    3.whitespace  analyzer  空白分析器
    由以下使用分词器组成

    Whitespace Tokenizer
    区分大小写分词,不做小写化处理,分词结果如下

    [ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog's, bone. ]


    4.stop  analyzer  停用分析器
      由以下使用分词器和分词过滤器组成

    Lower Case Tokenizer
    Stop Token Filter
      默认自动小写化词,默认使用_english_ 方式停用词。

      可配置,配置参数stopwords和stopwords_path,与standard 分析器配置方式一致,参考1例子。

    5.keyword  analyzer 关键字分析器 
    由以下使用分词器组成

    Keyword Tokenizer
       无自动小写化,返回整段词,无配置,分析结果如下。

    [ The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. ]


    6.pattern analyzer  模式分析器


      由以下使用分词器和分词过滤器组成

    Pattern Tokenizer
    Lower Case Token Filter
    Stop Token Filter 
       自动小写化,通过正则匹配分割词,默认是W+,即匹配所有非数字、字母和下划线的字符,默认分词结果如下。

    [ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
        可配置参数如下

    (1)pattern   匹配分隔符的正则表达式,默认W+,正则可参考此链接Java regular expression

    (2)flags    匹配模式,多个用|分隔(CASE_INSENSITIVE|COMMENTS),参考java Pattern类field,入口

    (3)lowercase   自动小写化,默认true

    (4)stopwords    停用词

    (5)stopwords_path   停用词文件路径

    配置例子如下:以所有非字母和数字作为切割符,自动小写化

    {
      "settings": {
        "analysis": {
          "analyzer": {
            "my_email_analyzer": {
              "type":      "pattern",
              "pattern":   "W|_", 
              "lowercase": true
            }
          }
        }
      }
    }

    7.fingerprint  analyzers
      由以下使用分词器和分词过滤器组成

    Standard Tokenizer
    Lower Case Token Filter
    ASCII Folding Token Filter
    Stop Token Filter
    Fingerprint Token Filter

    返回单一结果,结果自动排序,去除重复词。

    POST _analyze
    {
      "analyzer": "fingerprint",
      "text": "Yes yes, Gödel said this sentence is consistent and."
    }

    配置参数max_output_size,stopwords,stopwords_path与标准分析器一致

    separator参数    分词结果中每个单词的分隔方式,默认是空格

    8.custom analyzer 自定义分析器
      通过配置tokenizer、character filters、token filters实现定制的分析器。

    PUT my_index
    {
      "settings": {
        "analysis": {
          "analyzer": {
            "my_custom_analyzer": {
              "type":      "custom", 
              "tokenizer": "standard",
              "char_filter": [
                "html_strip"
              ],
              "filter": [
                "lowercase",
                "asciifolding"
              ]
            }
          }
        }
      }
    }
     
    POST my_index/_analyze
    {
      "analyzer": "my_custom_analyzer",
      "text": "Is this <b>déjà vu</b>?"
    }

    分词结果

    [ is, this, deja, vu ]

    参考自官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/analysis.html

  • 相关阅读:
    mybatis的延时加载缓存机制
    mybatis03
    事务
    codeforces-200B
    codeforces-339B
    codeforces-492B
    codeforces-266B
    codeforces-110A
    codeforces-887B
    codeforces-69A
  • 原文地址:https://www.cnblogs.com/xiaozengzeng/p/12369718.html
Copyright © 2011-2022 走看看