【问题标题】:Search for (Very) Approximate Substrings in a Large Database在大型数据库中搜索(非常)近似子字符串
【发布时间】:2011-03-26 19:50:15
【问题描述】:

我正在尝试在大型数据库中搜索长而近似的子字符串。例如,查询可能是一个 1000 个字符的子字符串,它可能与匹配项相差数百个编辑的 Levenshtein 距离。我听说索引 q-gram 可以做到这一点,但我不知道实现细节。我也听说 Lucene 可以做到,但是 Lucene 的 levenshtein 算法是否足够快,可以进行数百次编辑?也许是抄袭检测领域之外的东西?任何建议表示赞赏。

【问题讨论】:

  • 出于兴趣,您正在搜索的字符串信息是什么 - 文本信息或以不同形式结构化的内容?

标签: indexing lucene substring information-retrieval


【解决方案1】:

Q-gram 可能是一种方法,但还有其他方法,例如 Blast、BlastP - 用于蛋白质、核苷酸匹配等。

Simmetrics 库是字符串距离方法的综合集合。

【讨论】:

  • 你也应该看看余弦相似度
【解决方案2】:

Lucene 在这里似乎不是正确的工具。除了 Mikos 的好建议,我还听说过 AGREPFASTALocality-Sensitive Hashing(LSH)。我认为一种有效的方法应该首先大量修剪搜索空间,然后才对剩余的候选者进行更复杂的评分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2014-07-28
    • 2014-03-17
    • 2016-10-08
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多