在大型数据库中搜索(非常)近似子字符串

时间:2010-08-07 22:26:15

标签: indexing lucene substring information-retrieval

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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