例如,从英文单词集开始,是否有一种结构/算法可以快速检索与查询字符串“right”具有小Levenshtein距离的字符串,例如“light”和“tight”?换句话说,我想要检索与查询字符串相似的字符串。
BK树数据结构可能很适合这里。它被设计用于高效地支持查询形式为“与查询词的编辑距离小于等于k的所有单词是什么?”其性能保证相当不错,而且实现起来也不太困难。
希望这可以帮助你!
我记得最近看到一篇关于这个的文章,有一个很不错的Python实现。如果我能找到链接,我会加上的。编辑:在Steve Hanov的博客上找到了这篇文章。
我认为最快的方法是预先构建一个相似性缓存,您可以在O(1)时间内索引和访问。诀窍在于找到常见的拼写错误并将其添加到缓存中,这可能会变得非常大。
我想Google会使用他们广泛的统计查询搜索数据来做类似的事情。