❤️ 博客主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:大数据核心技术从入门到精通
文章目录
- 一、内置分词器
- 1. Standard(标准分词器)
- 英文示例
- 中文示例
- 2. Simple(简单分词器)
- 英文示例
- 中文示例
- 3. Whitespace(空格分词器)
- 英文示例
- 中文示例
- 4. Stop(停止分词器)
- 英文示例
- 中文示例
- 5. Keyword(关键字分词器)
- 英文示例
- 中文示例
- 6. Pattern(模板分词器)
- 英文示例
- 中文示例
- 7. Language(语言分词器)
- 英文示例
- 中文示例
- 8. Fingerprint(指纹分词器)
- 英文示例
- 中文示例
- 二、总结
- 三、附录
- 附录一:关于“停止词”的解释
- 附录二:Java 正则表达式
- 附录三:参考资料
- 四、系列文章
- 五、热门专栏
大家好,我是水滴~~
今天是女神节,在这里先祝各位女神们节日快乐。
一、内置分词器
Elasticsearch 内置了 8 种分词器,我们无需做任何配置即可使用它们。
1. Standard(标准分词器)
standard
是 Elasticsearch 的默认分词器,它通过 Unicode 文本分割算法,根据单词将文本进行分词。它删除了大多数的标点符号,并将字母转为小写。
英文示例
测试分词器:
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 ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "standard","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴, 尔, dell, 灵, 越, 15pro, 酷, 睿, i5, 笔, 记, 本, 电, 脑, 旗, 舰, 款 ]
2. Simple(简单分词器)
simple
分词器会按照任何非字母字符进行分割,例如:数字、空格、连字符等。会丢弃非字符的字符,并将大写更改为小写。
英文示例
测试分词器:
POST /_analyze
{"analyzer": "simple","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "simple","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, pro酷睿i, 笔记本电脑旗舰款 ]
3. Whitespace(空格分词器)
whitespace
顾名思义是按照空格进行分词的,即:简单的按照空格将原文进行分割。
英文示例
测试分词器:
POST _analyze
{"analyzer": "whitespace","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. ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "whitespace","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔(DELL), 灵越15pro酷睿i5笔记本电脑旗舰款 ]
4. Stop(停止分词器)
stop
分词器与simple
相同,在些基础上会删除停止词(如:a, the, or等),并将大写转为小写。“停止词”见附录一。
英文示例
测试分词器:
POST _analyze
{"analyzer": "stop","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "stop","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, pro酷睿i, 笔记本电脑旗舰款 ]
5. Keyword(关键字分词器)
keyword
不做分词,会将整个输入的字符串做为一个关键词。
英文示例
测试分词器:
POST _analyze
{"analyzer": "keyword","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. ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "keyword","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款 ]
6. Pattern(模板分词器)
pattern
分词器使用正则表达式将文本进行分词,表达式默认为:\W+
,会删除所有中文。“正则表达式”见附录二。
英文示例
测试分词器:
POST _analyze
{"analyzer": "pattern","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 ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "pattern","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ dell, 15pro, i5 ]
7. Language(语言分词器)
Language
分词器按照特定语言进行分词,支持的语言有:arabic
,armenian
,basque
,bengali
,brazilian
,bulgarian
,catalan
,cjk
,czech
,danish
,dutch
,english
,estonian
,finnish
,french
,galician
,german
,greek
,hindi
,hungarian
,indonesian
,irish
,italian
,latvian
,lithuanian
,norwegian
,persian
,portuguese
,romanian
,russian
,sorani
,spanish
,swedish
,turkish
,thai
。
其中cjk
表示“中日韩语”,但使用结果并不理想。
英文示例
测试分词器:
POST _analyze
{"analyzer": "english","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}
分词结果:
[ 2, quick, brown, fox, jump, over, lazy, dog, bone ]
中文示例
测试分词器:
POST /_analyze
{"analyzer": "cjk","text": "戴尔(DELL) 灵越15pro酷睿i5笔记本电脑旗舰款"
}
分词结果:
[ 戴尔, dell, 灵越, 15pro, 酷睿, i5, 笔记, 记本, 本电, 电脑, 脑旗, 旗舰, 舰款 ]
8. Fingerprint(指纹分词器)
fingerprint
是一种特殊的分词器,它会删除重复的字符,将这一个个单字符进行排序,并连接成一个字符串,可用于重复检测的指纹(例如:文章抄袭检查)。
英文示例
测试分词器:
POST _analyze
{"analyzer": "fingerprint","text": "Yes yes, Gödel said this sentence is consistent and."
}
分词结果:
[ and consistent godel is said sentence this yes ]
中文示例
测试分词器:
POST _analyze
{"analyzer": "fingerprint","text": "是的是的,Gödel说这句话是一致的。"
}
分词结果:
[ godel 一 句 是 的 致 话 说 这 ]
二、总结
Elasticsearch 内置的这些分词器对中文支持都不太好,而目前我们使用的中文分词器都是第三方插件,其中使用比较多的是“IK 分词器”。下一篇文章我们主要讲解:IK 分词器的安装、使用、自定义分词等。
三、附录
附录一:关于“停止词”的解释
引自百度百科:
停止词,是由英文单词:stopword翻译过来的,原来在英语里面会遇到很多a,the,or等使用频率很多的字或词,常为冠词、介词、副词或连词等。
如果搜索引擎要将这些词都索引的话,那么几乎每个网站都会被索引,也就是说工作量巨大。可以毫不夸张的说句,只要是个英文网站都会用到a或者是the。那么这些英文的词跟我们中文有什么关系呢? 在中文网站里面其实也存在大量的stopword,我们称它为停止词。比如,我们前面这句话,“在”、“里面”、“也”、“的”、“它”、“为”这些词都是停止词。这些词因为使用频率过高,几乎每个网页上都存在,所以搜索引擎开发人员都将这一类词语全部忽略掉。如果我们的网站上存在大量这样的词语,那么相当于浪费了很多资源。原本可以添加一个关键词,排名就可以上升一名的,为什么不留着添加为关键词呢?停止词对SEO的意义不是越多越好,而是尽量的减少为宜。
附录二:Java 正则表达式
Pattern (Java Platform SE 8 ) (oracle.com)
附录三:参考资料
Built-in analyzer reference | Elasticsearch Guide [7.17] | Elastic
四、系列文章
🔥 Elasticsearch 核心技术(一):Elasticsearch 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用
🔥 Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)
🔥 Elasticsearch 核心技术(五):常用数据类型详解
五、热门专栏
👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》