首页  

Elasticsearch分词器     所属分类 elasticsearch 浏览量 1107
Analysis
文本分析 分词  把文本转换成一系列单词(term/token)
Analysis通过Analyzer来实现

倒排索引

analyzer 三大组件
character filters , tokenizers , token filters

1) character filter 字符过滤器
   文本预处理,譬如过滤html标签 
2) tokenizers 分词器
   英文分词可以根据空格将单词分开,中文分词比较复杂 
3) Token filters  Token过滤器
   将切分的单词进行加工 ,大小写转换 ,去掉词(例如停用词等),或者增加词(例如同义词)

三者顺序
Character Filters--->Tokenizer--->Token Filter

三者个数
analyzer = CharFilters(0个或多个) + Tokenizer(恰好一个) + TokenFilters(0个或多个)


Elasticsearch内置分词器

Standard Analyzer     默认分词器,按词切分,小写处理
Simple Analyzer       按照非字母切分(符号被过滤), 小写处理
Stop Analyzer         小写处理,停用词过滤(the,a,is)

Whitespace Analyzer   按照空格切分,不转小写
Keyword Analyzer      不分词,直接将输入当作输出
Patter Analyzer       正则表达式,默认\W+(非字符分割)
Customer Analyzer     自定义分词器


POST _analyze
{"analyzer": "standard","text":"hello,es"}

max_token_length : 最大token长度,默认255
stopwords : 预定义的停止词列表,如_english_或 包含停止词列表的数组,默认是 _none_
stopwords_path : 包含停止词的文件路径

PUT myindex
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_english_analyzer": {
          "type": "standard",       #设置分词器为standard
          "max_token_length": 5,    #设置分词最大为5
          "stopwords": "_english_"  #设置过滤词
        }
      }
    }
  }
}


中文分词器  IK
https://github.com/medcl/elasticsearch-analysis-ik


./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/xxx/elasticsearch-analysis-ik-xxx.zip
安装完插件后重启ES才能生效

离线安装

cp  elasticsearch-analysis-ik-5.6.8.zip    $ESHOME/plugins
unzip elasticsearch-analysis-ik-5.6.8.zip 
mv elasticsearch ik
rm elasticsearch-analysis-ik-5.6.8.zip 

启动日志
loaded plugin [analysis-ik]

单机部署
network.host: 0.0.0.0
否则无法远程连接


两种粒度的拆分方法
ik_smart     最粗粒度的拆分
ik_max_word  最细粒度的拆分



POST /_analyze
{
  "text":"中华人民共和国国歌",
  "analyzer":"ik_smart"
}

{
    "tokens": [
        {
            "token": "中华人民共和国",
            "start_offset": 0,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "国歌",
            "start_offset": 7,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 1
        }
    ]
}


POST /_analyze
{
  "text":"中华人民共和国国歌",
  "analyzer":"ik_max_word"
}


{
    "tokens": [
        {
            "token": "中华人民共和国",
            "start_offset": 0,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 0
        },
        {
            "token": "中华人民",
            "start_offset": 0,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "中华",
            "start_offset": 0,
            "end_offset": 2,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "华人",
            "start_offset": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "人民共和国",
            "start_offset": 2,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "人民",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "共和国",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "共和",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "国",
            "start_offset": 6,
            "end_offset": 7,
            "type": "CN_CHAR",
            "position": 8
        },
        {
            "token": "国歌",
            "start_offset": 7,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 9
        }
    ]
}


get请求也可以
http://localhost:9200/_analyze?analyzer=ik_smart&text=hello elasticsearch

上一篇     下一篇
elasticsearch集群搭建

Elasticsearch analyzer 和 search_analyzer

Elasticsearch5快速入门

ElasticSearch 状态查询Cat接口

Elasticsearch _all字段

elasticsearch mappings dynamic属性