面试题答案
一键面试分词器配置
- 针对英文:
- 可使用
standard
分词器,它是Elasticsearch默认的英文分词器,会按词边界进行分词,能处理大部分常见英文场景。例如对于句子 “I love programming.”,standard
分词器会将其分为["I", "love", "programming"]
。 - 若想处理一些特殊情况,如连字符连接的词,可使用
english
分词器,它除了按词边界分词,还会对英文进行词干提取等操作。例如对于 “programming - languages”,english
分词器可能会处理为["program", "language"]
。
- 可使用
- 针对中文:
- 可选用
ik
分词器,ik_smart
模式会进行粗粒度分词,例如对于句子 “我爱自然语言处理”,ik_smart
会分为["我爱", "自然语言处理"]
。 ik_max_word
模式会进行细粒度分词,上述句子在ik_max_word
模式下会分为["我", "爱", "自然", "自然语言", "语言", "语言处理", "自然语言处理"]
。在需要更精确匹配的场景下,ik_max_word
可能更合适。
- 可选用
映射设置
假设使用Elasticsearch,以下是一个简单的索引映射示例:
{
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word", // 假设中文部分使用ik_max_word分词器
"fields": {
"english": {
"type": "text",
"analyzer": "english" // 假设英文部分使用english分词器
}
}
}
}
}
}
在这个映射中,content
字段整体使用ik_max_word
分词器处理可能包含的中文部分,同时通过fields
子字段english
使用english
分词器处理英文部分。这样在搜索时,可以对不同语言部分进行更精准高效的索引和搜索。例如,当搜索中文词汇 “自然语言” 或英文词干 “program” 时,能更准确地匹配到相关文档。