Java Lucene模糊搜索中的后缀长度

Java Lucene模糊搜索中的后缀长度,java,indexing,lucene,Java,Indexing,Lucene,我一直在使用lucene构建文档索引,并对其执行搜索。我知道lucene支持基于levenshtein距离的FuzzyQuery FuzzyQuery还有一个定义前缀长度的选项,我们可以在其中固定搜索词的前几个字符。我想知道是否有一个选项来定义后缀长度。或者请建议一些实现方法。在FuzzyQuery中使用前缀的主要原因是,它允许搜索在检查模糊匹配之前缩小可能的结果集,从而显著提高性能。添加后缀并不能提供任何这样的好处 实现这一点并获得性能优势的最佳方法可能是通过在分析器中添加一个索引来索引反转的

我一直在使用lucene构建文档索引,并对其执行搜索。我知道lucene支持基于levenshtein距离的FuzzyQuery


FuzzyQuery还有一个定义前缀长度的选项,我们可以在其中固定搜索词的前几个字符。我想知道是否有一个选项来定义后缀长度。或者请建议一些实现方法。

FuzzyQuery
中使用前缀的主要原因是,它允许搜索在检查模糊匹配之前缩小可能的结果集,从而显著提高性能。添加后缀并不能提供任何这样的好处


实现这一点并获得性能优势的最佳方法可能是通过在分析器中添加一个索引来索引反转的令牌。类似地,这通常用于支持前导通配符查询,而不会带来通常带来的巨大性能影响。

添加固定后缀长度不会以对称方式减少结果集吗?我的用例是这样的,我希望字段的最后几个字符精确匹配,同时允许在前几个字符中进行模糊匹配。我认为结合ReverseStringFilter和前缀长度将帮助我实现这一点。保持此选项打开,以查看是否有人建议使用更优雅的方法。@Ulrich-后缀不是有效减少结果集大小的方法。把lucene索引想象成一本书的索引。知道前两个字母可以让你直接翻到索引的正确部分,找到你需要查看的单词块。如果你知道单词的最后几个字母,你仍然需要扫描索引中的每个单词以找到正确的单词。啊,我现在明白了。我的印象是,我们可以修复任何给定的字符,并使搜索空间更小。