1

テキスト フィールド (たとえば 2000 文字) とその一意のハッシュ (たとえば SHA1 ) を MySQL テーブルに格納する必要があります。テキストが MySQL テーブルに既に存在することをテストするために、テキストの SHA1 を生成し、一意のフィールドに存在するかどうかを調べますhash

ここで、次の 2 つのテキストがあるとします。

  1. 「これはデータベースに保存されるテキストで、そのハッシュが生成されます」
  2. 「これはテキストで、データベースに保存され、そのハッシュが生成されます。」

小さな違いに注意してください。

1 が既にデータベースに追加されているとします。SHA1 ハッシュが大幅に異なるため、2 のチェックは機能しません。

明白な解決策の 1 つは、Leveinstein 距離、または difflib を使用して、既に追加されているすべてのテキスト フィールドを繰り返し処理し、MySQL テーブルからほぼ一致するようにすることです。

しかし、それはパフォーマンス指向ではありません。テキスト コンテンツと相関関係のある優れたハッシュ アルゴリズムはありますか? つまり、非常に類似したテキストに対して生成された 2 つのハッシュは、それ自体が非常に類似しています。

そうすれば、重複の可能性を MySQL テーブルに追加する前に検出しやすくなります。

4

2 に答える 2

3

ローカリティに敏感なハッシュを探しているようです。ウィキペディアの記事に加えて、このサイトで検索を実行して、いくつかのヒントを入手してください。

于 2013-04-10T07:05:30.683 に答える