【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师

ElasticSearch 分词器

img

概述

分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具

什么是分词器

顾名思义,文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。在 ES 中,Analysis 是通过分词器(Analyzer) 来实现的,可使用 ES 内置的分析器或者按需定制化分析器。

举一个分词简单的例子:比如你输入 Mastering Elasticsearch,会自动帮你分成两个单词,一个是 mastering,另一个是 elasticsearch,可以看出单词也被转化成了小写的。

图片

分词器的构成

分词器是专门处理分词的组件,分词器由以下三部分组成:

组成部分
character filter

接收原字符流,通过添加、删除或者替换操作改变原字符流

例如:去除文本中的html标签,或者将罗马数字转换成阿拉伯数字等。一个字符过滤器可以有零个或者多个

tokenizer

简单的说就是将一整段文本拆分成一个个的词。

例如拆分英文,通过空格能将句子拆分成一个个的词,但是对于中文来说,无法使用这种方式来实现。在一个分词器中,有且只有一个tokenizeer

token filters

将切分的单词添加、删除或者改变

例如将所有英文单词小写,或者将英文中的停词a删除等,在token filters中,不允许将token(分出的词)position或者offset改变。同时,在一个分词器中,可以有零个或者多个token filters.

分词顺序

图片

同时 Analyzer 三个部分也是有顺序的,从图中可以看出,从上到下依次经过 Character FiltersTokenizer 以及 Token Filters,这个顺序比较好理解,一个文本进来肯定要先对文本数据进行处理,再去分词,最后对分词的结果进行过滤。

索引和搜索分词

文本分词会发生在两个地方:

  • 创建索引:当索引文档字符类型为text时,在建立索引时将会对该字段进行分词。
  • 搜索:当对一个text类型的字段进行全文检索时,会对用户输入的文本进行分词。
配置分词器

默认ES使用standard analyzer,如果默认的分词器无法符合你的要求,可以自己配置

分词器测试

可以通过_analyzerAPI来测试分词的效果。

COPY# 过滤html 标签
POST _analyze
{
    "tokenizer":"keyword", #原样输出
    "char_filter":["html_strip"], # 过滤html标签
    "text":"<b>hello world<b>"  # 输入的文本
}

image-20220808135231869

指定分词器
使用地方

分词器的使用地方有两个:

  • 创建索引时
  • 进行搜索时
创建索引时指定分词器

如果设置手动设置了分词器,ES将按照下面顺序来确定使用哪个分词器:

  • 先判断字段是否有设置分词器,如果有,则使用字段属性上的分词器设置
  • 如果设置了analysis.analyzer.default,则使用该设置的分词器
  • 如果上面两个都未设置,则使用默认的standard分词器
字段指定分词器

为title属性指定分词器

COPYPUT my_index
{
  "mappings": {
    "properties": {
      "title":{
        "type":"text",
        "analyzer": "whitespace"
      }
    }
  }
}
设置默认分词器
COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default":{
          "type":"simple"
        }
      }
    }
  }
}
搜索时如何确定分词器

在搜索时,通过下面参数依次检查搜索时使用的分词器:

  • 搜索时指定analyzer参数
  • 创建mapping时指定字段的search_analyzer属性
  • 创建索引时指定settinganalysis.analyzer.default_search
  • 查看创建索引时字段指定的analyzer属性
  • 如果上面几种都未设置,则使用默认的standard分词器。
指定analyzer

搜索时指定analyzer查询参数

COPYGET my_index/_search
{
  "query": {
    "match": {
      "message": {
        "query": "Quick foxes",
        "analyzer": "stop"
      }
    }
  }
}
指定字段analyzer
COPYPUT my_index
{
  "mappings": {
    "properties": {
      "title":{
        "type":"text",
        "analyzer": "whitespace",
        "search_analyzer": "simple"
      }
    }
  }
}
指定默认default_seach
COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default":{
          "type":"simple"
        },
        "default_seach":{
          "type":"whitespace"
        }
      }
    }
  }
}
内置分词器

es在索引文档时,会通过各种类型 Analyzer 对text类型字段做分析,

不同的 Analyzer 会有不同的分词结果,内置的分词器有以下几种,基本上内置的 Analyzer 包括 Language Analyzers 在内,对中文的分词都不够友好,中文分词需要安装其它 Analyzer

分析器描述分词对象结果
standard标准分析器是默认的分析器,如果没有指定,则使用该分析器。它提供了基于文法的标记化(基于 Unicode 文本分割算法,如 Unicode 标准附件 # 29所规定) ,并且对大多数语言都有效。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog’s, bone ]
simple简单分析器将文本分解为任何非字母字符的标记,如数字、空格、连字符和撇号、放弃非字母字符,并将大写字母更改为小写字母。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
whitespace空格分析器在遇到空白字符时将文本分解为术语The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog’s, bone. ]
stop停止分析器与简单分析器相同,但增加了删除停止字的支持。默认使用的是 _english_ 停止词。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
keyword不分词,把整个字段当做一个整体返回The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.]
pattern模式分析器使用正则表达式将文本拆分为术语。正则表达式应该匹配令牌分隔符,而不是令牌本身。正则表达式默认为 w+ (或所有非单词字符)。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
多种西语系 arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, cjk, czech, danish, dutch, english等等一组旨在分析特定语言文本的分析程序。
中文扩展分析器

中文分词器最简单的是ik分词器,还有jieba分词,哈工大分词器等

分词器描述分词对象结果
ik_smartik分词器中的简单分词器,支持自定义字典,远程字典学如逆水行舟,不进则退[学如逆水行舟,不进则退]
ik_max_wordik_分词器的全量分词器,支持自定义字典,远程字典学如逆水行舟,不进则退[学如逆水行舟,学如逆水,逆水行舟,逆水,行舟,不进则退,不进,则,退]

词语分词

标准分词器(Standard Tokenizer)

根据standardUnicode文本分段算法的定义,将文本划分为多个单词边界的上的术语

它是 ES 默认的分词器,它会对输入的文本按词的方式进行切分,切分好以后会进行转小写处理,默认的 stopwords 是关闭的

图片

使用案例

下面使用 Kibana 看一下它是怎么样进行工作的

原始内容
COPYIn 2020, Java is the best language in the world.
测试分词

在 Kibana 的开发工具(Dev Tools)中指定 Analyzer 为 standard,并输入文本 In 2020, Java is the best language in the world.,然后我们运行一下:

COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "standard"
}

image-20220808105014779

可以看出是按照空格、非字母的方式对输入的文本进行了转换,比如对 Java 做了转小写,对一些停用词也没有去掉,比如 in,其中 token 为分词结果;start_offset 为起始偏移;end_offset 为结束偏移;position 为分词位置。

可配置项
选项描述
max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。
stopwords预定义的停用词列表,例如english或包含停用词列表的数组。默认为none。
stopwords_path包含停用词的文件的路径。
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5,
                    "stopwords": "_english_"
                }
            }
        }
    }
}
简单分词器(Letter Tokenizer)

当simple分析器遇到非字母的字符时,它会将文本划分为多个术语,它小写所有术语,对于中文和亚洲很多国家的语言来说是无用的

图片

它只包括了 Lower CaseTokenizer,它会按照非字母切分非字母的会被去除,最后对切分好的做转小写处理,然后接着用刚才的输入文本,分词器换成 simple 来进行分词,运行结果如下:

使用案例
原始内容
COPYIn 2020, Java is the best language in the world.
测试分词
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "simple"
}

image-20220808105857762

空白分词器(Whitespace Tokenizer)

它非常简单,根据名称也可以看出是按照空格进行切分

该whitespace分析仪将文本分为方面每当遇到任何空白字符,和上面的分词器不同,空白分词器默认并不会将内容转换为小写。

图片

使用案例
原始内容
COPYIn 2020, Java is the best language in the world.
测试分词
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "whitespace"
}

image-20220808110235685

电子邮件分词器(UAX URL Email Tokenizer)

此分词器主要是针对email和url地址进行关键内容的标记。

使用案例
原始内容
COPY"Email me at john.smith@global-international.com"
测试分词
COPYGET _analyze
{
  "text":"Email me at john.smith@global-international.com",
  "tokenizer": "uax_url_email"
}
可配置项

max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255

COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_english_analyzer": {
                    "type": "standard",
                    "max_token_length": 5
                }
            }
        }
    }
}
经典分词器(Classic Tokenizer)

可对首字母缩写词,公司名称,电子邮件地址和互联网主机名进行特殊处理,但是,这些规则并不总是有效,并且此关键词生成器不适用于英语以外的大多数其他语言

特点
  • 它最多将标点符号拆分为单词,删除标点符号,但是,不带空格的点被认为是查询关键词的一部分
  • 此分词器可以将邮件地址和URL地址识别为查询的term(词条)
使用案例
原始内容
COPY"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
测试分词
COPYGET _analyze
{
  "text":"The 2 QUICK Brown-Foxes jumped over the lazy dog's bone.",
  "analyzer": "classic"
}

image-20220808111755030

可配置项

max_token_length最大令牌长度。如果看到令牌超过此长度,则将其max_token_length间隔分割。默认为255。

COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                }
            },
            "tokenizer": {
                "my_tokenizer": {
                    "type": "classic",
                    "max_token_length": 5
                }
            }
        }
    }
}

结构化文本分词

关键词分词器(Keyword Tokenizer)

它其实不做分词处理,只是将输入作为 Term 输出

关键词分词器其实是执行了一个空操作的分析,它将任何输入的文本作为一个单一的关键词输出。

图片

使用案例
原始内容
COPY"In 2020, Java is the best language in the world."
测试分词
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "keyword"
}

会发现前后内容根本没有发生改变,这也是这个分词器的作用,有些时候我们针对一个需要分词查询的字段进行查询的时候,可能并不希望查询条件被分词,这个时候就可以使用这个分词器,整个查询条件作为一个关键词使用

image-20220808112235674

正则分词器(Pattern Tokenizer)

模式标记器使用 Java正则表达式。使用JAVA的正则表达式进行词语的拆分。

它可以通过正则表达式的方式进行分词,默认是用 \W+ 进行分割的,也就是非字母的符合进行切分的。

图片

使用案例
原始内容
COPY"In 2020, Java is the best language in the world."
测试分词
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer": "patter"
}

image-20220808112737629

可配置项

正则分词器有以下的选项

选项描述
pattern正则表达式
flags正则表达式标识
lowercase是否使用小写词汇
stopwords停止词的列表。
stopwords_path定义停止词文件的路径。
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_email_analyzer": {
                    "type": "pattern",
                    "pattern": "\\W|_",
                    "lowercase": true
                }
            }
        }
    }
}
路径分词器(Path Tokenizer)

可以对文件系统的路径样式的请求进行拆分,返回被拆分各个层级内容。

使用案例
原始内容
COPY"/one/two/three"
测试分词
COPYGET _analyze
{
  "text":"/one/two/three",
  "tokenizer":"path_hierarchy"
}

image-20220808113500717

可配置项
选项描述
delimiter用作路径分隔符的字符
replacement用于定界符的可选替换字符
buffer_size单次读取到术语缓冲区中的字符数。默认为1024。术语缓冲区将以该大小增长,直到所有文本都被消耗完为止。建议不要更改此设置。
reverse正向还是反向获取关键词
skip要忽略的内容
COPY{
    "settings": {
        "analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "my_tokenizer"
                }
            },
            "tokenizer": {
                "my_tokenizer": {
                    "type": "path_hierarchy",
                    "delimiter": "-",
                    "replacement": "/",
                    "skip": 2
                }
            }
        }
    }
}
语言分词(Language Analyzer)

ES 为不同国家语言的输入提供了 Language Analyzer 分词器,在里面可以指定不同的语言

支持语种

支持如下语种:

关键字语种
arabic美 /ˈærəbɪk/ 阿拉伯语
armenian美 /ɑːrˈmiːniən/ 亚美尼亚语
basque美 /bæsk,bɑːsk/ 巴斯克语
bengali美 /beŋˈɡɑːli/ 孟加拉语
brazilian美 /brəˈzɪliən/ 巴西语
bulgarian美 /bʌlˈɡeriən/ 保加利亚语
catalan美 /ˈkætəlæn/ 加泰罗尼亚语
cjk中日韩统一表意文字
czech美 /tʃek/ 捷克语
danish美 /ˈdeɪnɪʃ/ 丹麦语
dutch美 /dʌtʃ/ 荷兰语
english美 /ˈɪŋɡlɪʃ/ 英语
estonian美 /eˈstoʊniən/ 爱沙尼亚语
finnish美 /ˈfɪnɪʃ/ 芬兰语
french美 /frentʃ/ 法语
galician美 /ɡəˈlɪʃn/ 加里西亚语
german美 /ˈdʒɜːrmən/ 德语
greek美 /ɡriːk/ 希腊语
hindi美 /ˈhɪndi/ 北印度语
hungarian美 /hʌŋˈɡeriən/ 匈牙利语
indonesian美 /ˌɪndəˈniːʒn/ 印度尼西亚语
irish美 /ˈaɪrɪʃ/ 爱尔兰语
italian美 /ɪˈtæliən/ 意大利语
latvian美 /ˈlætviən/ 拉脱维亚语
lithuanian美 /ˌlɪθuˈeɪniən/ 立陶宛语
norwegian美 /nɔːrˈwiːdʒən/ 挪威语
persian/‘pɜːrʒən/ 波斯语
portuguese美 /ˌpɔːrtʃʊˈɡiːz/ 葡萄牙语
romanian美 /ro’menɪən/ 罗马尼亚语
russian美 /ˈrʌʃn/ 俄语
sorani索拉尼语
spanish美 /ˈspænɪʃ/ 西班牙语
swedish美 /ˈswiːdɪʃ/ 瑞典语
turkish美 /ˈtɜːrkɪʃ/ 土耳其语
thai美 /taɪ/ 泰语
使用案例

下面我们使用英语进行分析

原始内容
COPY"In 2020, Java is the best language in the world."
测试分词
COPYGET _analyze
{
  "text":"In 2020, Java is the best language in the world.",
  "analyzer":"english"
}

image-20220808114216744

自定义分词器

当内置的分词器无法满足需求时,可以创建custom类型的分词器。

配置参数
参数描述
tokenizer内置或定制的tokenizer.(必须)
char_filter内置或定制的char_filter(非必须)
filter内置或定制的token filter(非必须)
position_increment_gap当值为文本数组时,设置改值会在文本的中间插入假空隙。设置该属性,对与后面的查询会有影响。默认该值为100.
创建索引

上面的示例中定义了一个名为my_custom_analyzer的分词器

该分词器的typecustomtokenizerstandardchar_filterhmtl_strip,filter定义了两个分别为:lowercaseasciifolding

COPYPUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer":{
          "type":"custom",
          "tokenizer":"standard",
          "char_filter":["html_strip"],
          "filter":["lowercase","asciifolding"]
        }
      }
    }
  }
}
使用案例
原始内容
COPYIs this <b>déjà vu</b>?
测试分词
COPYPOST my_index/_analyze
{
  "text": "Is this <b>déjà vu</b>?",
  "analyzer": "my_custom_analyzer"
}

image-20220808140137712

中文分词器

IKAnalyzer

IKAnalyzer是一个开源的,基于java的语言开发的轻量级的中文分词工具包

从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本,在 2012 版本中,IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化

使用IK分词器

IK提供了两个分词算法:

  • ik_smart:最少切分。
  • ik_max_word:最细粒度划分。
ik_smart
使用案例
原始内容
COPY传智教育的教学质量是杠杠的
测试分词
COPYGET _analyze
{
  "analyzer": "ik_smart",
  "text": "传智教育的教学质量是杠杠的"
}

image-20220808115450647

ik_max_word
使用案例
原始内容
COPY传智教育的教学质量是杠杠的
测试分词
COPYGET _analyze
{
  "analyzer": "ik_max_word",
  "text": "传智教育的教学质量是杠杠的"
}

image-20220808115513668

自定义词库

我们在使用IK分词器时会发现其实有时候分词的效果也并不是我们所期待的

问题描述

例如我们输入“传智教育的教学质量是杠杠的”,但是分词器会把“传智教育”进行拆开,分为了“传”,“智”,“教育”,但我们希望的是“传智教育”可以不被拆开

image-20220808115543696

解决方案

对于以上的问题,我们只需要将自己要保留的词,加到我们的分词器的字典中即可

编辑字典内容

进入elasticsearch目录plugins/ik/config中,创建我们自己的字典文件yixin.dic,并添加内容:

COPYcd plugins/ik/config
echo "传智教育" > custom.dic
扩展字典

进入我们的elasticsearch目录 :plugins/ik/config,打开IKAnalyzer.cfg.xml文件,进行如下配置:

COPYvi IKAnalyzer.cfg.xml
#增加如下内容
<entry key="ext_dict">custom.dic</entry>
再次测试

重启ElasticSearch,再次使用kibana测试

COPYGET _analyze
{
  "analyzer": "ik_max_word",
  "text": "传智教育的教学质量是杠杠的"
}

可以发现,现在我们的词汇”传智教育”就不会被拆开了,达到我们想要的效果了

image-20220808134046401

本文由传智教育博学谷狂野架构师教研团队发布。

如果本文对您有帮助,欢迎关注点赞;如果您有任何建议也可留言评论私信,您的支持是我坚持创作的动力。

转载请注明出处!

博学谷狂野架构师
关注 关注
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据ES数据存储,查询之IK中文分词器
09-19
对于ES IK分词插件在中文检索中非常常用,本人也使用了挺久的。但知识细节一直很碎片化,一直没有做详细的整理。过一段时间用的话,也是依然各找资料,也因此会降低开发效率。所以在有空的时候好好整理下相关资料。也希望本文对使用 ElasticSearch 和 IK分词插件的开发者有所帮助。希望能少走点弯路。 本文包括前言、IK分词介绍、分词效果对比、自定义词典使用、索引设置和字段设置(Python 创建索引并导入数据)、查询测试(Python 查询)、结论等七个部分。
elasticsearch7.17.9版本分词器插件安装包
11-13
适用于elasticsearch7.17.9版本的分词器插件安装包
Elasticsearch中的分词器的基本介绍以及使用
gaoqiandr的博客
01-28 2264
本文主要介绍的是elasticsearch分词器的基本使用
Elasticsearch使用系列-ES增删查改基本操作+ik分词
she8656837的专栏
03-09 1452
可以看到“爱祖国”的分词结果为“爱,祖,国”,被拆分成了单个字,只要一个字匹配到就查出来,这样的结果很多不是我们想要的。这里说一下kibana执行的原理,kibana执行的是http请求,前面的PUT为请求方式,还有POST,GET等,后面的user是索引名称,因为kibana配置了es的信息,数值:long,integer,short,byte,double,float,half float,scaled float。这里的数据类型标红的是ES的重点类型,其它的和平时开发的类型一样,没什么特别。
ES入门十四:分词器
最新发布
一只小星星
04-07 1127
除了使用内置的分词器外,我们还可以通过组合 Tokenizer、Filters、Character Filters 来自定义分词器。"char_filter": { # 自定义char_filter"mappings": ["& => and"] # 将 '&' 转换为 'and'},"filter": { # 自定义 filter"stopwords": ["an"] # 设置 "an" 为停用词},"analyzer": { # 自定义分词器为 custom_analyzer。
Elasticsearch之几个重要的分词器
weixin_33686714的博客
02-24 364
      前提 什么是倒排索引? Elasticsearch分词器的作用 Elasticsearch分词器的工作流程 Elasticsearch之停用词 Elasticsearch之中文分词器               Elasticsearch的几个重要的分词器:                                      ...
ElasticSearch--Field的使用
F0217911的博客
08-29 2717
文章通过指定ElasticSearch中文本field属性来配合IK分词器的更好使用,同时也对搜索功能进行了增强
elasticsearch系列三:索引详解分词器、文档管理、路由详解(集群))
weixin_34289744的博客
06-18 725
一、分词器 1. 认识分词器  1.1 Analyzer   分析器  在ES中一个Analyzer 由下面三组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符。处理完后再交给tokenizer进行分词。一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理。 tokenizer:分词器,对文本进...
ElasticSearch分词器
ChinaCR07的博客
01-05 3709
1. ES分词器 分词器是专门处理分词的组件,Analyzer由三部分组成:Character Filters、Tokenizer、Token Filters。 Character Filters:对文本原始处理,如去除html, Tokenizer:按照分词器规则进行切分单词, Token Filters:将切分后的单词进行加工,小写,删除空格,增加同义词等。 2. ES内置的分词器 2...
elasticsearch-7.14.0+分词器+head插件一键下载
09-04
elasticsearch-7.14.0+分词器+head插件下载
elasticsearch7.17.11版本分词器插件安装包
11-13
适用于elasticsearch7.17.11版本的分词器插件安装包
windows版本ES7.17.3中文分词器elasticsearch-analysis-ik-7.17.3 .zip
02-05
用于elasticsearch7.17.3这个版本的ik中文分词器,考虑到官网有时网络不稳定下载不下来,这里特意上传,方便大家使用; 目录结构如下: config -- 文件夹 plugin-security.policy plugin-descriptor.properties ...
ik分词器tar包 7.10.2
03-03
ik分词器tar包 7.10.2
ES中的分词器
weixin_34342992的博客
05-06 606
2019独角兽企业重金招聘Python工程师标准>>> ...
Elasticsearch 分词器
weixin_30376323的博客
01-01 102
无论是内置的分析器(analyzer),还是自定义的分析器(analyzer),都由三构件块组成的:character filters , tokenizers , token filters。 内置的analyzer将这些构建块预先打包到适合不同语言和文本类型的analyzer中。 Character filters (字符过滤器) 字符过滤器以字符流的形式接收原始文本,并可以通过添加、...
ElasticSearch分词器
leehoward
09-07 4291
什么是分词器分词器,是将用户输入的一段文本,分析成符合逻辑的一工具。到目前为止呢,分词器没有办法做到完全的符合人们的要求。和我们有关的分词器有英文的和中文的。英文的分词器过程:输入文本-关键词切分-去停用词-形态还原-转为小写。中文的分词器分为:单字分词 例:中国人 分成中、国、人;二分法分词:例中国人:中国、国人;词典分词:有基本的语意来进行分词的,例:中国人分成中国,国人,中国人,现在
3.ElasticSearch分词器,包括默认分词器、英文分词器、中文分词器
名猿陈大浏的博客
08-28 7232
导图(用于总结和复习) ​ ​ 注:使用 GET /test/_analyze 可以使用分词器查看分词结果,例: 以上用例是使用 analyzer 指定英文分词器查看分词结果,如果field是索引里的字段,会使用字段指定的分词器进行分词。 接下来进入测试。 默认分词器 默认使用standar分词器 在不标明的时候都是使用默认的standar分词 在建索引的时候,使用 analyzer 指定字段分词器 测试数据: #1.删除 /test下的测试数据 DELETE /test/
Elasticsearch学习笔记——分词
weixin_34192816的博客
12-08 87
1.测试Elasticsearch分词 Elasticsearch有多分词器(参考:https://www.jianshu.com/p/d57935ba514b) Set the shape to semi-transparent by calling set_trans(5) (1)standard analyzer:标准分词器(默认是这) set,the,shape,to,semi,...
Elasticsearch分词器
qq_44918331的博客
12-11 2182
Elastic入门教程(三) ES内置的6分词器 standard analyzer 标准分词器,未设置分词器时默认使用此分词器。在空格、符号处切,中文部分切割为一个一个的汉字。 切的意思是不要了。多个连续的空格算一个空格,符号指的是!、?、@、。等 “h!ello wo2rld a b我是a中国人d” => h ello wo2rld a b 我 是 a 中 国 人 simple analyzer 简单分词器。在空格、符号、数字处切,中文部分不会切割为一个一个的
elasticsearch分词器
07-28
Elasticsearch是一个开源的分布式搜索和分析引擎,它提供了强大的全文搜索和分析功能。在Elasticsearch中,分词器是用于将文本字段拆分成有意义的单词(或词组)的组件。 Elasticsearch提供了多内置的分词器,也支持自定义分词器。以下是常用的一些内置分词器: 1. Standard Analyzer:这是默认的分词器,使用标准的语法规则来拆分单词,包括去除停用词、小写化等操作。 2. Simple Analyzer:这个分词器将文本按照非字母字符进行简单拆分,不考虑大小写转换和停用词。 3. Whitespace Analyzer:这个分词器将文本按照空格进行拆分,不考虑大小写转换和停用词。 4. Keyword Analyzer:这个分词器将整个文本视为一个单词,不进行任何拆分。 5. Language-specific Analyzers:Elasticsearch还提供了针对特定语言的分词器,如English Analyzer、Chinese Analyzer等,根据不同语言的特点进行了优化。 除了以上内置的分词器Elasticsearch还支持自定义分词器,您可以根据自己的需求定义自己的分词逻辑。自定义分词器可以使用各过滤器、字符映射等来实现更复杂的分词操作。 希望这些信息对您有所帮助!如果您有更多关于Elasticsearch分词器的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 全网最全的Apollo教程从入门到精通 13490
  • 【超详细】手把手教你搭建MongoDB集群搭建 11355
  • 超详细教程,一文入门Istio架构原理及实战应用 6851
  • 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师 5977
  • 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师 5801

最新评论

  • 全网最全的Apollo教程从入门到精通

    大奔子A: 有h2文件数据库的贴子嘛,老哥

  • 超详细教程,一文入门Istio架构原理及实战应用

    运维小斌: 牛的,简单明了很清晰,照着多学几遍希望有效!

  • 【建议收藏】超详细的Canal入门,看这篇就够了!!!

    初级小猿华仔: 配置-e canal.instance.filter.regex=heima\\..* ,报错no matches found: canal.instance.filter.regex=heima\..*; 但是配置-e canal.instance.filter.regex=heima.tb_item就不报错了,也就是不能配置canal监听heima库下的所有表,但是能配置监听heima库下的某一张表,不知道为啥

  • 【建议收藏】超详细的Canal入门,看这篇就够了!!!

    初级小猿华仔: 表情包配置-e canal.instance.filter.regex=heima\\..* ,报错no matches found: canal.instance.filter.regex=heima\..*; 但是配置-e canal.instance.filter.regex=heima.tb_item就不报错了,也就是不能配置canal监听heima库下的所有表,但是能配置监听heima库下的某一张表,不知道为啥 表情包

  • 超详细教程,一文入门Istio架构原理及实战应用

    alanke_ke: istioctl manifest apply --set profile=demo 执行时长时间卡住 ^C发现容器探针超时怎么办表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 他皮任他皮,我学我的习-我的Java进阶之路!!
  • 6000+字讲透ElasticSearch 索引设计
  • 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师
2023年49篇
2022年120篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司海口网站制作哪家好绥化关键词按天收费恩施SEO按天计费报价内江阿里店铺托管公司株洲外贸网站设计报价哈密网站制作多少钱那曲营销网站推荐六安英文网站建设张掖建设网站推荐民治阿里店铺运营公司毕节模板网站建设推荐上饶网站优化按天扣费多少钱大浪英文网站建设价格鞍山关键词按天计费多少钱厦门百度标王报价曲靖网站推广哪家好遵义百姓网标王推荐聊城网页制作多少钱广东百姓网标王推广桂林网站优化哪家好焦作网站优化按天扣费白山网页设计价格白山seo优化报价南充品牌网站设计报价中山SEO按天扣费报价天津建网站哪家好塘坑阿里店铺运营报价茂名网站优化按天扣费价格淄博阿里店铺运营推荐泰安网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化