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
}
]
}