面试题答案
一键面试实现思路
- 字符过滤器(Character Filters):用于在分词前对原始文本进行预处理,处理特殊字符等。
- 分词器(Tokenizer):将文本分割成一个个词项(tokens),要选择能适应多种语言的分词器。
- 词项过滤器(Token Filters):对分词后的词项进行进一步处理,如大小写转换、停用词移除等。
详细配置
- 创建自定义分析器
PUT /your_index
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"type": "custom",
"char_filter": [
"html_strip" // 可去除HTML标签等,可根据特殊字符情况自定义其他字符过滤器
],
"tokenizer": "icu_tokenizer", // ICU分词器可处理多种语言,也可根据需求选其他,如SmartChinese分词器处理中文
"filter": [
"lowercase", // 转换为小写
"stop" // 移除停用词,可自定义停用词列表
]
}
}
}
}
}
- 使用自定义分析器
PUT /your_index/_mapping
{
"properties": {
"your_field": {
"type": "text",
"analyzer": "custom_analyzer"
}
}
}
在上述配置中:
html_strip
字符过滤器可去除HTML标签,如果文档有其他特殊字符,可自定义字符过滤器处理。icu_tokenizer
分词器能较好处理多种语言文本分词。若对特定语言有更好的分词需求,可替换合适分词器。lowercase
词项过滤器将词项转为小写,stop
词项过滤器移除停用词,可根据实际情况调整停用词列表。