面试题答案
一键面试fuzziness参数
- 作用:
fuzziness
定义了在模糊搜索中允许的最大编辑距离。编辑距离是指将一个单词转换为另一个单词所需的最少单字符编辑操作(插入、删除、替换)次数。- 例如,设置
fuzziness
为1时,搜索“apple”,可能匹配到“appel”(替换一个字符)、“appple”(插入一个字符)或“aple”(删除一个字符)等。
- 不同业务场景设置:
- 对精确性要求高的场景:如金融交易记录搜索、法律条文检索等,设置
fuzziness
为0,即不允许模糊匹配,确保搜索结果的绝对精确。 - 通用文本搜索场景:例如搜索引擎的通用网页搜索,可设置
fuzziness
为1或2。设置为1可以处理常见的拼写错误,设置为2能匹配到更模糊的结果,但可能会引入更多噪声。 - 对相似性要求极高的场景:比如生物基因序列名称搜索(相似基因名称可能仅有细微差别),可适当提高
fuzziness
值,但需结合其他过滤条件控制结果数量。
- 对精确性要求高的场景:如金融交易记录搜索、法律条文检索等,设置
prefix_length参数
- 作用:
prefix_length
指定了在进行模糊匹配时,单词起始部分必须精确匹配的字符数。- 例如,设置
prefix_length
为3,搜索“elephant”,只有以“ele”开头的单词才会进行后续的模糊匹配,像“elephent”(编辑距离为1且前缀匹配)可能被匹配到,但“lephent”不会被考虑进行模糊匹配,因为前缀不匹配。
- 不同业务场景设置:
- 减少模糊匹配范围的场景:当业务场景中有大量相似但含义不同的词汇,如产品型号搜索,可能存在“model123a”和“model123b”等,设置
prefix_length
为3或4,可以减少无关模糊匹配,提高搜索准确性。 - 避免匹配过于宽泛的场景:在通用搜索中,如果担心
fuzziness
设置较高导致匹配结果过于宽泛,可结合prefix_length
,比如设置prefix_length
为2 - 3,在一定程度上限制模糊匹配的起始部分,让结果更符合预期。
- 减少模糊匹配范围的场景:当业务场景中有大量相似但含义不同的词汇,如产品型号搜索,可能存在“model123a”和“model123b”等,设置