ElasticSearch的分析器实际上是将三个功能封装在一起,这三个功能按照顺序执行,而这三个功能都是能自定义的
字符过滤器 (char_filter)
首先,字符串按顺序通过每个字符过滤器,他们的任务是在分词前整理字符串
一个字符过滤器可以用来去掉HTML,或者将&转化成and
分词器 (tokenizer)
其次,字符串被分词器分爲单个的词条,一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条
Hello how are you?会被ES预设的分词器standard分成hello、how、are、you
Token 过滤器 (filter)
最后,词条按顺序通过每个 token 过滤器,这个过程可能会改变词条(Quick -> quick)、删除词条(a、an、and、the...)、增加词条(jump和leap这种同义词)
自定义分析器
格式
PUT 127.0.0.1:9200/mytest
{
"setting": {
"analysis": {
"char_filter": { 自定义的字符过滤器 },
"tokenizer": { 自定义的分词器 },
"filter": { 自定义的token过滤器 },
"analyzer": { 自定义的分析器,可以将上面的char_filter、tokenizer、filter用不同的组合拼起来,形成不同的分析器 }
}
}
}