私は次の問題を抱えています:
類似点を探しています。したがって、200000エントリの大きなソーステーブルと10000エントリの2番目のテーブルがあります。ここで、各テーブルのエントリセットを取得し、ソーステーブルのすべての行をJavaの2番目のテーブルのすべての行と比較しています(NeedleMan Gotohアルゴリズムと同様のより複雑なアルゴリズムを使用しています)。それは10億の比較を意味し、それは多すぎて遅すぎます...
目標は、すべての類似性(ソーステーブルからのID、2番目のテーブルからのID、および類似性の値)、または少なくともすべてのエントリのベストマッチ(またはベストxマッチ)のようなテーブルです。
「通常の」時間にそのような計算を行うためのアドバイスを誰かに教えてもらえますか?
編集
メインテーブル
---+------+-------------+---------+-------+
id | name | address | country | plz | ...
---+------+-------------+---------+-------+
20 | Sony | Main Str. 1 | US | 10000 |
---+------+-------------+---------+-------+
2番目のテーブル
---+------+-------------+---------+-------+
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は、ソーステーブルの会社が2番目のテーブルの会社と同じである可能性を示す値です。
結果は、2つの行が同じ会社を表していることを示しています... 2つのエントリはタイプミスが小さいために異なります...(0.99は類似性であり、非常に高い=>企業は同じです)類似性は針マンで計算されますwunsch gotohアルゴリズム(charとcharを比較し、文字列内の位置などを考慮する...タイプミスは高い類似性値をもたらすはずです)