テキスト フィールド (たとえば 2000 文字) とその一意のハッシュ (たとえば SHA1 ) を MySQL テーブルに格納する必要があります。テキストが MySQL テーブルに既に存在することをテストするために、テキストの SHA1 を生成し、一意のフィールドに存在するかどうかを調べますhash
。
ここで、次の 2 つのテキストがあるとします。
- 「これはデータベースに保存されるテキストで、そのハッシュが生成されます」
- 「これはテキストで、データベースに保存され、そのハッシュが生成されます。」
小さな違いに注意してください。
1 が既にデータベースに追加されているとします。SHA1 ハッシュが大幅に異なるため、2 のチェックは機能しません。
明白な解決策の 1 つは、Leveinstein 距離、または difflib を使用して、既に追加されているすべてのテキスト フィールドを繰り返し処理し、MySQL テーブルからほぼ一致するようにすることです。
しかし、それはパフォーマンス指向ではありません。テキスト コンテンツと相関関係のある優れたハッシュ アルゴリズムはありますか? つまり、非常に類似したテキストに対して生成された 2 つのハッシュは、それ自体が非常に類似しています。
そうすれば、重複の可能性を MySQL テーブルに追加する前に検出しやすくなります。