分词器(Analyzer)组成
本章定位:Analyzer 是 Elasticsearch 文本处理的入口。每次写入和搜索,文本都会经过 Analyzer 处理。理解其内部组件才能设计正确的搜索体验。
定义与作用
Analyzer(分词器)由三个组件依次处理:
- Character Filter(字符过滤器):预处理原始文本(去除 HTML 标签、转换字符)
- Tokenizer(分词器):将字符串切分为词项(Term)
- Token Filter(词项过滤器):对词项进行增删改(转小写、停用词、同义词)
核心原理:三阶段处理流水线
完整示例:自定义 Analyzer
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": ["html_strip"],
"tokenizer": "standard",
"filter": ["lowercase", "stop"]
}
}
}
}
}
小结
Analyzer 三组件流程固定但可自由组合。写入和搜索一般使用相同的 Analyzer,但有时"索引时分得细(ik_max_word),搜索时分得粗(ik_smart)"更优。