我有以下问题:
我正在寻找相似之处。因此,我有一个包含 200000 个条目的大源表和包含 10000 个条目的第二个表。现在我正在为每个表检索一个条目集,并将源表中的每一行与 java 中第二个表中的每一行进行比较(我正在使用一些 NeedleMan Gotoh 算法和类似的更复杂的算法)。这意味着要进行 10 亿次比较,这实在是太多太慢了……
目标是一个具有所有相似性的表(来自源表的 id、来自第二个表的 id 和相似性值)或至少类似于每个条目的最佳匹配(或最佳 x 匹配)......
谁能给我一些建议以在“正常”时间内进行此类计算?
编辑
主表
---+------+-------------+---------+-------+
id | name | address | country | plz | ...
---+------+-------------+---------+-------+
20 | Sony | Main Str. 1 | US | 10000 |
---+------+-------------+---------+-------+
第二张表
---+------+-------------+---------+-------+
id | name | address | country | plz | ...
---+------+-------------+---------+-------+
30 | Soni | MainStr. 1 | US | 10000 |
---+------+-------------+---------+-------+
目标(相似度表):
---+---------------+--------------+-----------+
id | id_source_tbl | id_second_tbl| similarity|
---+---------------+--------------+-----------+
1 | 20 | 30 | 0.99 |
---+---------------+--------------+-----------+
simil_value 是一个值,表示源表中的公司与第二个表中的公司相同的可能性有多大
结果表明,这两行代表同一家公司...这两个条目只是因为拼写错误而有所不同...(0.99 是相似度,非常高 => 公司相同)相似度是用针线工计算的wunsch gotoh 算法(将 char 与 char 进行比较并考虑字符串中的位置等等......错别字应该导致高相似度值)