ES-分词器安装与使用详解
目录
ES-分词器安装与使用详解
安装分词器
windows环境,分词器有2种安装方式,1.直接命令安装;2.压缩包安装
IK分词器
查看ik分词器文档,找到安装方式介绍
文档链接:
方式1
elasticsearch-plugin install
方式2
下载压缩包,然后解压放入到 es的plugins目录
找到es对应的版本,然后下载
验证是否安装成功
elasticsearch-plugin list
测试分词器
需要先重启ES POST /_analyze { “analyzer”: “ik_max_word”, “text”: “中华人民” } 结果 { “tokens” : [ { “token” : “中华人民”, “start_offset” : 0, “end_offset” : 4, “type” : “CN_WORD”, “position” : 0 }, { “token” : “中华”, “start_offset” : 0, “end_offset” : 2, “type” : “CN_WORD”, “position” : 1 }, { “token” : “华人”, “start_offset” : 1, “end_offset” : 3, “type” : “CN_WORD”, “position” : 2 }, { “token” : “人民”, “start_offset” : 2, “end_offset” : 4, “type” : “CN_WORD”, “position” : 3 } ] }
分词器的组成
分词器(Analyzer)是用于将文本拆分为词项(Token)的工具。分词器由以下三个部分组成:
- 字符过滤器(Character Filters) :对原始文本进行预处理(如去除 HTML 标签、替换字符等)。
- 分词器(Tokenizer) :将文本拆分为词项。
- 词项过滤器(Token Filters) :对分词后的词项进行处理(如小写转换、去除停用词等)
分词器种类
分词器 | 特点 | 适用场景 | 优点 | 缺点 | 示例 |
---|---|---|---|---|---|
Standard Analyzer | 默认分词器,基于 Unicode 文本分割算法,按空格和标点符号分词,转换为小写。 | ||||
英文或其他基于空格分隔的语言 | 简单易用,无需额外配置。 | 不支持中文分词,对特殊字符敏感。 | "Hello, world!" → `[“hello”, | ||
“world”]` | |||||
english Analyzer | 转换成小写,词干提取、停用词过滤 | “Barking a games”->[“bark”,“game”] | |||
Simple Analyzer | 按非字母字符分词,转换为小写。 | 简单的英文分词 | 轻量级,适合简单场景。 | 无法处理复杂文本,不支持中文。 | |
"Hello, world!" → ["hello", "world"] | |||||
Whitespace Analyzer | 按空格分词,不转换大小写。 | 需要保留大小写的场景 | 保留原始大小写,适合特定需求。 | ||
无法处理标点符号,不支持中文。 | "Hello, world!" → ["Hello,", "world!"] | ||||
Keyword Analyzer | 将整个文本作为一个词项,不进行分词。 | 需要精确匹配的场景(如 ID、标签) | 保留完整文本,适合精确匹配。 | ||
不适合全文搜索。 | "Hello, world!" → ["Hello, world!"] | ||||
Pattern Analyzer | 基于正则表达式分词,默认按非字母字符分词,转换为小写。 | 需要自定义分词规则的场景 | |||
灵活,支持自定义正则表达式。 | 配置复杂,性能较低。 | "Hello, world!" → ["hello", "world"] | |||
Language Analyzer | 针对特定语言(如英语、法语、德语)优化分词。 | 多语言支持 | 针对特定语言优化,分词效果较好。 | ||
需要指定语言,不支持中文。 | "Hello, world!" → ["hello", "world"] | ||||
IK Analyzer | 支持中文分词,提供 ik_smart (智能分词)和 ik_max_word (最大分词)两种模式。 | ||||
中文文本处理 | 中文分词效果好,支持自定义词典。 | 需要额外安装插件,重启 Elasticsearch。 | "你好世界" → `[“你好”, | ||
“世界”]( ik_smart)或 [“你好”, “世界”, “你好世界”]( ik_max_word`) | |||||
Jieba Analyzer | 支持中文分词,提供 search (搜索模式)和 index (索引模式)两种模式。 | 中文文本处理 | |||
中文分词效果好,支持自定义词典。 | 需要额外安装插件,重启 Elasticsearch。 | "你好世界" → `[“你好”, | |||
“世界”]( search)或 [“你好”, “世界”, “你好世界”]( index`) | |||||
Nori Analyzer | 针对韩语优化的分词器。 | 韩语文本处理 | 韩语分词效果好,支持自定义词典。 | 需要额外安装插件,重启 | |
Elasticsearch。 | "안녕하세요" → ["안녕", "하세요"] | ||||
Kuromoji Analyzer | 针对日语优化的分词器。 | 日语文本处理 | 日语分词效果好,支持自定义词典。 | 需要额外安装插件,重启 | |
Elasticsearch。 | "こんにちは" → ["こんにちは"] | ||||
Stempel Analyzer | 针对波兰语优化的分词器。 | 波兰语文本处理 | 波兰语分词效果好,支持自定义词典。 | 需要额外安装插件,重启 | |
Elasticsearch。 | "Witaj świecie" → ["witaj", "świecie"] |