Elasticsearch分词

2024-07-22 13:53:00 浏览数 (4)

Elasticsearch搜索中比较重要的就是分词了,通过分词将内容拆分成不同的关键词,然后通过关键词的匹配度来打分排序选择结果,Elasticsearch默认是支持分词的,但是对中文的分词就可想而知了,所以中文分词需要自行安装差件,推荐IK分词插件。

内置分词

分词器

名称

说明

Standard Analyzer

标准分词器

适用于英语等

Simple Analyzer

简单分词器

于非字母字符进行分词,单词会被转为小写字母

Whitespace Analyzer

空格分词器

按照空格进行切分

Stop Analyzer

简单分词器 停用词

类似于简单分词器,但是增加了停用词的功能

Keyword Analyzer

关键词分词器

输入文本等于输出文本,不会切分

Pattern Analyzer

正则分词器

利用正则表达式对文本进行切分,支持停用词

Language Analyzer

语言分词器

针对特定语言的分词器

Fingerprint Analyzer

指纹分词器

指纹分析仪分词器,通过创建标记进行重复检测

中文分词

安装
  1. 下载
  2. 解压安装到你的es目录/plugins文件夹下
  3. 改名为ik
  4. 扩展词典和自定义词典需修改配置文件ik/config/IKAnalyzer.cfg.xml
  5. 重启elasticsearcch服务
使用

IK提供了两个分词算法:

ik_smart为最少切分

代码语言:javascript复制
GET _analyze 
{ 
"analyzer":"ik_smart", 
"text":"中国农业银行" 
}

结果为

代码语言:javascript复制
{
"tokens" : [
  {
    "token" : "中国农业银行",
    "start_offset" : 0,
    "end_offset" : 6,
    "type" : "CN_WORD",
    "position" : 0
  }
]
}

ik_max_word为最细粒度划分

代码语言:javascript复制
GET _analyze 
{ 
"analyzer":"ik_max_word", 
"text":"农业银行" 
}

结果为

代码语言:javascript复制
{
"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" : 2,
    "end_offset" : 4,
    "type" : "CN_WORD",
    "position" : 2
  }
]
}

1 人点赞