五 、Elasticsearch分词器

5.1 分词器处理分词的组件

(1)Character filters,原始文本的预处理,通常完成HTML元素删除,替换指定字符等功能;

例如:<span>hello<span> --> hello ,& --> andI&you --> I and you

  1. Tokenizer,分词,按照预设的规则切分文本

   例如:hello you and me --> hello, you, and, me

(3)Token filter,切分后处理,例如大小写转换,删除停用词/stopwords,增加同义词

例如:hello you and me --> hello, you, and, me

5.2 内置分词器介绍

5.2.1 Standard Analyzer

默认分词器

按词切分,支持多语言

小写处理

支持中文采用的方法为单字切分

5.2.2 Simple Analyzer

按照非字母切分

小写处理

5.2.3 Whitespace Analyzer

空白字符作为分隔符

5.2.4 Stop Analyzer

相比Simple Analyzer多了去除请用词处理

停用词指语气助词等修饰性词语,如the, an, 的,这等

5.2.5 Keyword Analyzer

不分词,直接将输入作为一个单词输出

5.2.5 Pattern Analyzer

通过正则表达式自定义分隔符

 

5.3安装IK分词器

5.3.1下载 es版本对应的 IK 版本

5.3.2进入容器docker exec -it es bash

5.3.3通过elasticsearch-plugin install 安装对应版本

5.3.4重启容器

5.4 IK分词器使用

{

    "settings" : {

        "analysis" : {

            "analyzer" : {

                "ik" : {

                    "tokenizer" : "ik_max_word"

                }

            }

        }

    },

    "mappings" : {

        "motor_fans_short_topic" : {

            "dynamic" : true,

            "properties" : {

                  "intro" :

                  {    "type": "text",

                    "analyzer": "ik_max_word",

                    "search_analyzer": "ik_max_word"

                  },

                "title" : {

                    "type": "text",

                    "analyzer": "ik_max_word",

                    "search_analyzer": "ik_max_word"

                }

            }

        }

    }

}

 

5.5ik_max_word 和 ik_smart 什么区别

ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query

ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询

原创文章 138 获赞 12 访问量 7万+

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/104663713