-1

我一直在使用 Soundex 算法,我发现它已经在 J​​ava http://introcs.cs.princeton.edu/java/31datatype/Soundex.java.html中准备好了。该程序的主要用途是准备一个 .cvs 文件,然后在将其条目保存到数组中之后,它会借助该算法检查其中一个数组的语音相似性。(有关 soundex 算法的更多信息http://en.wikipedia.org/wiki/Soundex)。

我的 .cvs 文件大约有 200.000 个条目,因此,检查 30.000 个条目需要 5 个小时,我认为这很慢。[我的算法将数组的每个条目与所有其他条目一起检查,除了已经检查过的条目 - 所以,我认为这里没有问题]。

所以,我的问题是:有没有办法减少这个时间?

我一直在考虑在 SQL 的帮助下将我的数据库直接连接到程序,但我不知道是否有另一种方法可以更快地做到这一点。

请任何建议都会非常有帮助。

4

2 回答 2

1

我不知道 Java 算法是如何工作的。很多数据库都包含一个soundex()功能。这会将一个字符串转换为另一个表示声音的字符串。

然后,您可以在生成的 soundex 字符串之间进行比较。

这应该比您当前的方法快得多。您必须对其进行测试以查看它是否返回可接受的结果。

实际上,我只是看了一下java代码。你可以在那里采取同样的方法。浏览文件,计算每个条目的 soundex。然后进行比较——也许通过对文件进行排序并查找重复项。

于 2013-01-10T17:07:59.240 回答
0

只需在您的数据库中使用 soundex 实现。大多数流行的大型数据库都内置了它,例如PostgreSQLMySQL甚至微软的T-SQL。与您使用的任何 Java 库相比,它会更容易设置并且可能更快。

于 2013-01-10T19:45:56.770 回答