Elasticsearch
搜索中比较重要的就是分词了,通过分词将内容拆分成不同的关键词,然后通过关键词的匹配度来打分排序选择结果,Elasticsearch
默认是支持分词的,但是对中文的分词就可想而知了,所以中文分词需要自行安装差件,推荐IK
分词插件。
内置分词
分词器 | 名称 | 说明 |
---|---|---|
Standard Analyzer | 标准分词器 | 适用于英语等 |
Simple Analyzer | 简单分词器 | 于非字母字符进行分词,单词会被转为小写字母 |
Whitespace Analyzer | 空格分词器 | 按照空格进行切分 |
Stop Analyzer | 简单分词器+停用词 | 类似于简单分词器,但是增加了停用词的功能 |
Keyword Analyzer | 关键词分词器 | 输入文本等于输出文本,不会切分 |
Pattern Analyzer | 正则分词器 | 利用正则表达式对文本进行切分,支持停用词 |
Language Analyzer | 语言分词器 | 针对特定语言的分词器 |
Fingerprint Analyzer | 指纹分词器 | 指纹分析仪分词器,通过创建标记进行重复检测 |
中文分词
安装
- 下载
- 解压安装到
你的es目录/plugins
文件夹下 - 改名为
ik
- 扩展词典和自定义词典需修改配置文件
ik/config/IKAnalyzer.cfg.xml
- 重启
elasticsearcch
服务
使用
IK
提供了两个分词算法:
ik_smart
为最少切分GET _analyze { "analyzer":"ik_smart", "text":"中国农业银行" }
结果为
{ "tokens" : [ { "token" : "中国农业银行", "start_offset" : 0, "end_offset" : 6, "type" : "CN_WORD", "position" : 0 } ] }
ik_max_word
为最细粒度划分GET _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" : 2, "end_offset" : 4, "type" : "CN_WORD", "position" : 2 } ] }
评论