【发布时间】:2016-04-16 05:02:05
【问题描述】:
我一直在使用 lucene 来构建文档索引,并对它们进行搜索。我知道lucene支持基于levenshtein距离的FuzzyQuery。
FuzzyQuery 还有一个选项来定义前缀长度,我们可以在其中保持搜索词的前几个字符固定。我想知道是否有定义后缀长度的选项。或者请提出一些我可以实现的实现。
【问题讨论】:
我一直在使用 lucene 来构建文档索引,并对它们进行搜索。我知道lucene支持基于levenshtein距离的FuzzyQuery。
FuzzyQuery 还有一个选项来定义前缀长度,我们可以在其中保持搜索词的前几个字符固定。我想知道是否有定义后缀长度的选项。或者请提出一些我可以实现的实现。
【问题讨论】:
FuzzyQuery 中前缀的主要原因是它允许搜索在检查模糊匹配之前缩小可能的结果集,从而显着提高性能。添加后缀不会提供任何此类好处。
实现这一点并获得性能优势的最佳方法可能是通过在分析器中添加ReverseStringFilter 来索引反转的标记。这同样经常用于支持领先的通配符查询,而不会带来通常随之而来的巨大性能损失。
【讨论】: