Lucene FuzzySearch是否支持自定义编辑距离操作的权重设置?
关于Lucene FuzzyQuery自定义操作权重的说明
Lucene 7.3.1版本的FuzzyQuery(基于Damerau-Levenshtein距离)不支持直接自定义插入、删除、替换、换位操作的权重/成本。
具体说明
原生FuzzyQuery的编辑距离计算逻辑是固定的:
- 插入、删除、替换操作的成本默认均为1
- 相邻字符的换位操作也被视为成本1(等价于一次替换的代价)
官方文档及API中未提供可修改这些操作权重的配置项。
替代方案
如果需要适配按键错误检测这类需自定义权重的场景,可以尝试以下两种方式:
- 自定义编辑距离实现:扩展Lucene的
EditDistance接口,实现带有自定义权重规则的Damerau-Levenshtein距离计算,再基于此实现自定义的模糊查询类,替换原生FuzzyQuery - 业务层预处理:根据键盘布局等权重规则,先为输入词生成带权重的候选词集合,再将这些候选词作为查询条件传入Lucene,避免修改底层查询逻辑
内容的提问来源于stack exchange,提问作者Mohamed Niyaz
相关产品推荐
相关产品推荐

