面试题答案
一键面试- 模糊查询(Fuzzy Query):
- 原理:基于编辑距离(如Levenshtein距离)来匹配文本。编辑距离是指将一个字符串转换为另一个字符串所需的最少单字符编辑操作(插入、删除、替换)次数。Elasticsearch会根据设置的最大编辑距离(如
fuzziness
参数)来查找与目标词编辑距离在范围内的词。例如,设置fuzziness
为2,那么与目标词编辑距离小于等于2的词都会被匹配出来。
- 原理:基于编辑距离(如Levenshtein距离)来匹配文本。编辑距离是指将一个字符串转换为另一个字符串所需的最少单字符编辑操作(插入、删除、替换)次数。Elasticsearch会根据设置的最大编辑距离(如
- 通配符查询(Wildcard Query):
- 原理:使用通配符(
?
匹配单个字符,*
匹配零个或多个字符)来匹配文本。例如,查询词为te?t
,其中?
可匹配任意单个字符,那么test
、tellt
等都可能被匹配。*
的功能更强,如te*
可匹配test
、teacher
等以te
开头的词。但通配符查询性能相对较低,因为它需要对索引中的每个词进行匹配计算。
- 原理:使用通配符(
- 前缀查询(Prefix Query):
- 原理:匹配以指定前缀开头的词。例如,前缀查询
pre
,会匹配prefix
、preference
等以pre
开头的词。它主要针对用户输入可能只是完整词的开头部分这种情况,在处理搜索建议等场景较为常用。Elasticsearch通过前缀树(Trie树)结构快速定位匹配前缀的词,性能较高。
- 原理:匹配以指定前缀开头的词。例如,前缀查询
- 同义词处理(Synonym):
- 原理:预先定义一些同义词组,当对其中一个词进行查询时,其同义词也会被纳入查询范围。例如,定义
car
和automobile
为同义词,当查询car
时,包含automobile
的文档也会被检索出来。通常通过配置同义词文件或在索引映射中定义同义词来实现。这样可以处理用户使用不同表述但语义相同的情况。
- 原理:预先定义一些同义词组,当对其中一个词进行查询时,其同义词也会被纳入查询范围。例如,定义