更新: ssdeep C API 用のphp_ssdeepという PHP 拡張機能を記述して、PHP でネイティブにファジー ハッシュとハッシュ比較を容易にします。詳細については、私のブログを参照してください。これが人々に役立つことを願っています。
私は、さまざまなファイル形式 (場合によっては数千のファイル) を格納する Linux ボックス上の PHP でカスタム ドキュメント管理アプリケーションを作成することに関与しており、データベースでの重複を防ぐために、テキスト ドキュメントが以前にアップロードされたかどうかを確認できるようにする必要があります。 .
基本的に、ユーザーが新しいファイルをアップロードするときに、重複しているか類似のコンテンツを含むファイルのリストを提示できるようにしたいと考えています。これにより、既存のドキュメントの 1 つを選択するか、独自のドキュメントをアップロードし続けることができます。
類似の文書は、その内容を調べて類似の文と、おそらく動的に生成されたキーワードのリストを調べることによって判断されます。次に、一致率をユーザーに表示して、重複を見つけやすくします。
このプロセスに推奨するパッケージと、過去にこれをどのように行ったかについてのアイデアはありますか?
すべてのテキストコンテンツを取得することで、直接複製できると思います。
- 空白の除去
- 句読点の削除
- 小文字または大文字に変換
次に、MD5 ハッシュを形成して、新しいドキュメントと比較します。これらの項目を取り除くことで、たとえばユーザーが文書を編集して余分な段落区切りを追加した場合に、重複が見つからなくなるのを防ぐことができます。何かご意見は?
このプロセスは、夜間のジョブとして実行される可能性もあり、計算要件が大きすぎてリアルタイムで実行できない場合、次回のログイン時にユーザーに重複を通知できます。ただし、リアルタイムが優先されます。