【发布时间】:2011-06-27 05:38:46
【问题描述】:
所以是的,我读到了如何在字符串之间使用编辑距离来决定两个字符串彼此之间的“接近”程度。该算法以动态问题的形式实现,需要 O(mn) 时间,其中 m 和 n 分别是文本和模式的长度。因此,如果我必须将一个字符串与 5000 个其他字符串进行匹配,这将花费大量时间,这在我的应用程序中是完全不能接受的。是否有更快的解决方案可以实施?我不介意用存储空间换取时间。
我在 Android 上看到了一个名为“Swype”的应用程序,它做了类似的事情。它根据自己的数据库搜索您的查询并建议结果。怎么会这么快?
注意:请不要推荐像 Lucene 这样的框架,因为我无法在 J2ME 上运行。
【问题讨论】:
-
这是为了打字更正吗?你确定你需要比 Levenshtein 距离更快的东西吗? 5000 如果是字典中的短词,听起来还不错。
-
这基本上是为了根据预先填充的文章列表搜索文章名称(用户查询)。现在,由于用户可能输入了错误的查询,因此搜索必须建议最接近的匹配项,如果没有找到,则建议“不匹配”。
标签: java algorithm string java-me