分析器(Analyzers) #
分析器是文本分析的核心组件,由三部分组成:
- 字符过滤器(0~多个):预处理原始文本
- 分词器(必须 1 个):将文本拆分为词项
- 词元过滤器(0~多个):对词项进行后处理
Easysearch 提供多种内置分析器,也支持创建自定义分析器。
相关指南 #
内置分析器总览 #
通用分析器 #
| 分析器 | 说明 | 适用场景 |
|---|---|---|
| Standard(标准) | 默认分析器,按单词边界分词,转小写 | 通用英文/欧洲语言 |
| Simple(简单) | 按非字母字符分词,转小写 | 简单文本 |
| Whitespace(空白) | 仅按空白字符分词,保留大小写和标点 | 需要保留原始形式 |
| Stop(停用词) | Simple + 移除停用词 | 需要过滤常用词 |
| Keyword(关键字) | 不分词,整体作为一个词项 | 精确匹配场景 |
| Pattern(正则) | 按正则表达式分词 | 自定义分割规则 |
| Fingerprint(指纹) | 去重、排序、连接为单个词项 | 去重检测 |
语言分析器 #
完整说明及通用参数请参阅 语言分析器总览。
| 分析器 | 语言 | 说明 |
|---|---|---|
arabic | 阿拉伯语 | 阿拉伯语归一化 + 词干提取 |
armenian | 亚美尼亚语 | Snowball 词干提取 |
basque | 巴斯克语 | Snowball 词干提取 |
bengali | 孟加拉语 | 印度语系归一化 + 词干提取 |
brazilian | 巴西葡萄牙语 | 巴西葡萄牙语词干提取 |
bulgarian | 保加利亚语 | 保加利亚语词干提取 |
catalan | 加泰罗尼亚语 | 省音处理 + Snowball 词干提取 |
czech | 捷克语 | 捷克语词干提取 |
danish | 丹麦语 | Snowball 词干提取 |
dutch | 荷兰语 | 词干覆盖字典 + Snowball |
english | 英语 | 所有格处理 + Porter 词干提取 |
estonian | 爱沙尼亚语 | Snowball 词干提取 |
finnish | 芬兰语 | Snowball 词干提取 |
french | 法语 | 省音处理 + 轻量词干提取 |
galician | 加利西亚语 | 加利西亚语词干提取 |
german | 德语 | 字符归一化 + 轻量词干提取 |
greek | 希腊语 | 希腊语专用小写 + 词干提取 |
hindi | 印地语 | 印度语系归一化 + 词干提取 |
hungarian | 匈牙利语 | Snowball 词干提取 |
indonesian | 印度尼西亚语 | 印度尼西亚语词干提取 |
irish | 爱尔兰语 | 专用小写 + 双重停用词过滤 |
italian | 意大利语 | 省音处理 + 轻量词干提取 |
latvian | 拉脱维亚语 | 拉脱维亚语词干提取 |
lithuanian | 立陶宛语 | Snowball 词干提取 |
norwegian | 挪威语 | Snowball 词干提取 |
persian | 波斯语 | 字符过滤 + 阿拉伯语/波斯语归一化 |
polish | 波兰语 | 波兰语词干提取 |
portuguese | 葡萄牙语 | 轻量词干提取 |
romanian | 罗马尼亚语 | 字符归一化 + Snowball 词干提取 |
russian | 俄语 | Snowball 词干提取 |
sorani | 索拉尼语 | 索拉尼语归一化 + 词干提取 |
spanish | 西班牙语 | 轻量词干提取 |
swedish | 瑞典语 | Snowball 词干提取 |
thai | 泰语 | Java BreakIterator 泰语分词 |
turkish | 土耳其语 | 专用小写(İ/I)+ Snowball |
形态分析器 #
| 分析器 | 说明 |
|---|---|
| English Morphology | 英语形态分析 |
| Russian Morphology | 俄语形态分析 |
中文分析器 #
| 分析器 | 说明 | 适用场景 |
|---|---|---|
| IK 中文分析器 | 智能中文分词(ik_smart / ik_max_word) | 中文全文搜索 |
| Pinyin(拼音) | 中文转拼音 | 拼音搜索、输入法联想 |
| STConvert(简繁转换) | 简体繁体互转 | 跨简繁搜索 |
选择分析器 #
| 场景 | 推荐分析器 |
|---|---|
| 英文全文搜索 | standard 或 english |
| 中文全文搜索 | ik_smart(平衡)或 ik_max_word(细粒度) |
| 精确匹配 | keyword |
| 保留标点/格式 | whitespace |
| 拼音搜索 | pinyin |
| 多语言混合 | 自定义分析器组合多种过滤器 |
创建自定义分析器 #
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"char_filter": ["html_strip"],
"tokenizer": "standard",
"filter": ["lowercase", "porter_stem"]
}
}
}
}
}
测试分析器 #
// 测试内置分析器
GET /_analyze
{
"analyzer": "standard",
"text": "The quick brown fox"
}
// 测试索引的分析器
GET /my_index/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "The quick brown fox"
}