ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Elasticsearch学习笔记之—分词器 analyzer

2019-12-19 16:54:03  阅读:332  来源: 互联网

标签:token analyzer standard Filter Token Elasticsearch 分词器 offset type


analyzer

由三部分构成:

Character Filters、Tokenizers、Token filters

Character Filters 负责字符过滤    官方的解释是:字符过滤器用来把阿拉伯数字(٠‎١٢٣٤٥٦٧٨‎٩)‎转成成Arabic-Latin的等价物(0123456789)或用于去掉html内容,如:<b>。

Tokenizers  负责分词,常用的分词器有:whitespace、standard

Token filters  

  1. Standard Token Filter   目前什么也不做
  2. ASCII Folding Token Filter  asciifolding 类型的词元过滤器,将不在前127个ASCII字符(“基本拉丁文”Unicode块)中的字母,数字和符号Unicode字符转换为ASCII等效项(如果存在)。
  3. Length Token Filter   

    length用于去掉过长或者过短的单词;

    min 定义最短长度

    max 定义最长长度

    用法如下:

    GET _analyze
    {
      "tokenizer" : "standard",
      "filter": [{"type": "length", "min":1, "max":3 }],  
      "text" : "this is a test"
    }

    结果:

    "tokens": [
        {
          "token": "is",
          "start_offset": 5,
          "end_offset": 7,
          "type": "<ALPHANUM>",
          "position": 1
        },
        {
          "token": "a",
          "start_offset": 8,
          "end_offset": 9,
          "type": "<ALPHANUM>",
          "position": 2
        }
      ]
  4. Lowercase Token Filter    将词元文本规范化为小写
  5. Uppercase Token Filter    将词元文本规范化为大写
  6. Stop Token Filter   过滤某些关键字  输入:
    {
      "tokenizer" : "standard",
      "filter": [{"type": "stop", "stopwords": ["this", "a"]}],  
      "text" : ["this is a test"]
    }

    输出:

    # stopwords中拦截词this, a 被过滤掉;
    "tokens": [
        {
          "token": "is",
          "start_offset": 5,
          "end_offset": 7,
          "type": "<ALPHANUM>",
          "position": 1
        },
        {
          "token": "test",
          "start_offset": 10,
          "end_offset": 14,
          "type": "<ALPHANUM>",
          "position": 3
        }
      ]

     

  7. Stemmer Token Filter    可以添加几乎所有的词元过滤器,所以是一个通用接口 用法如下
    PUT /my_index
    {
        "settings": {
            "analysis" : {
                "analyzer" : {
                    "my_analyzer" : {
                        "tokenizer" : "standard",
                        "filter" : ["standard", "lowercase", "my_stemmer"]
                    }
                },
                "filter" : {
                    "my_stemmer" : {
                        "type" : "stemmer",
                        "name" : "light_german"
                    }
                }
            }
        }
    }

     

  8. Synonym Token Filter  同意词
  9. Reverse Token Filter  将词反转,示例如下:
    调用:
    GET _analyze { "tokenizer": "standard", "filter": ["reverse"], "text": ["hello world"] }
    结果:
    "tokens": [ { "token": "olleh", "start_offset": 0, "end_offset": 5, "type": "<ALPHANUM>", "position": 0 }, { "token": "dlrow", "start_offset": 6, "end_offset": 11, "type": "<ALPHANUM>", "position": 1 } ]

     

标签:token,analyzer,standard,Filter,Token,Elasticsearch,分词器,offset,type
来源: https://www.cnblogs.com/wjx-blog/p/12068487.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有