【问题标题】:Suffix Length in Lucene Fuzzy SearchLucene 模糊搜索中的后缀长度
【发布时间】:2016-04-16 05:02:05
【问题描述】:

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

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

【问题讨论】:

    标签: java indexing lucene


    【解决方案1】:

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

    实现这一点并获得性能优势的最佳方法可能是通过在分析器中添加ReverseStringFilter 来索引反转的标记。这同样经常用于支持领先的通配符查询,而不会带来通常随之而来的巨大性能损失。

    【讨论】:

    • 添加固定后缀长度不会以对称方式减少结果集吗?我的用例是这样的,我希望字段的最后几个字符完全匹配,同时容忍前几个字符中的一些模糊匹配。我认为结合 ReverseStringFilter 和 Prefix Length 将帮助我实现这一目标。保持开放,看看是否有人建议更优雅的方式。
    • @Ulrich - 后缀不是有效减小结果集大小的有效方法。将 lucene 索引视为一本书的索引。知道前几个字母可以让您向右翻到索引的正确部分并找到需要查看的单词块。如果您知道单词的最后几个字母,您仍然可以扫描索引中的每个单词以找到正确的单词。
    • 啊,我明白了。我的印象是我们可以修复任何给定的字符,并缩小搜索空间。
    猜你喜欢
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多