分析器(Analyzers)

分析器(Analyzers) #

分析器是文本分析的核心组件,由三部分组成:

  1. 字符过滤器(0~多个):预处理原始文本
  2. 分词器(必须 1 个):将文本拆分为词项
  3. 词元过滤器(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(简繁转换)简体繁体互转跨简繁搜索

选择分析器 #

场景推荐分析器
英文全文搜索standardenglish
中文全文搜索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"
}