Elasticsearch 分词工作原理
在 Elasticsearch 中进行行分词的需要经过分析器的3个模块,字符过滤器将文本进行替换或者删除,在由分词器进行拆分成单词,最后由Token过滤器将一些无用语气助词删掉。
英文分词
在Elasticsearch 中共支持5种不同的分词模式,在不同的场景下发挥不同的效果。
- standard(过滤标点符号)
GET /_analyze
{
"analyzer": "standard",
"text": "The programmer's holiday is 1024!"
}
- simple (过滤数字和标点符号)
GET /_analyze
{
"analyzer": "simple",
"text": "The programmer's holiday is 1024!"
}
- whitespace (不过滤,按照空格分隔)
GET /_analyze
{
"analyzer": "whitespace",
"text": "The programmer's holiday is 1024!"
}
- stop (过滤停顿单词及标点符号,例如is are等等)
GET /_analyze
{
"analyzer": "stop",
"text": "The programmer's holiday is 1024!"
}
- keyword (视为一个整体不进行任何处理)
GET /_analyze
{
"analyzer": "keyword",
"text": "The programmer's holiday is 1024!"
}
- path hierarchy tokenizer (路径层次分词器)
POST /_analyze
{
"tokenizer": "path_hierarchy",
"text":"/usr/local/python/python2.7"
}
中文分词
因为 Elasticsearch 默认的分词器只能按照单字进行拆分,无法具体分析其语意等,所以我们使用 analysis-ik 来代替默认的分词器。
GET /_analyze
{
"analyzer": "standard",
"text": "程序员学elasticsearch"
}
使用 ik_smart