【问题标题】:Phrase search with slop in Lucene在 Lucene 中使用 slop 进行短语搜索
【发布时间】:2014-02-16 06:31:48
【问题描述】:

我无法理解这如何成为热门。

在我的索引中我有:

wb wc wd

我的搜索词是:

"wd wc wb wa"~6

如何将第二个查询重新排列为第一个,只进行 6 次重新排列?我最初的假设是,这需要最少 slop 8 才能被击中(向左移动 wa 3 个位置,向右移动 wd 3 个位置,向右移动 wc 1 个位置,向左移动 wb 1 个位置),但我实际上得到了 slop 6 或更多。

谢谢。

【问题讨论】:

    标签: search lucene


    【解决方案1】:

    编辑距离还包含删除和插入操作。在您的情况下,可以进行以下 6 次操作来实现结果匹配:

    • 向右移动 wb
    • 向右移动 wb
    • 删除厕所
    • 删除 wd
    • 插入厕所
    • 插入 wd

    【讨论】:

    • 这不是混淆邻近搜索(带引号)和模糊搜索(不带引号)吗?
    • 邻近搜索总是需要在删除后插入,而模糊搜索不需要。
    【解决方案2】:

    https://lucene.apache.org/core/8_0_0/core/org/apache/lucene/search/PhraseQuery.html#getSlop-- 中,“quick fox”和“the fox is quick”之间的编辑距离为 3 的编辑距离似乎不准确。

    并不是说 Lucene 使用的编辑距离是 Levenshtein 距离(插入、删除、替换,权重均为 1),而是用 slop 为 2 的“quick fox”PhraseQuery 的测试(就够了)命中了文本“狐狸很快”(1 次删除 + 1 次插入)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      相关资源
      最近更新 更多