Excel ファイルの類似検索(準備)

Twitter / @futamiryo: 画像は類似検索があるけどxlsやzipは完全一致ばっ …
https://twitter.com/#!/futamiryo/status/163566455504375808

 

image

単純に、バイナリdiff を取ればよいのでは?と思ったり思わなかったりしただけど、

  • バイナリ形式で、Excel ファイルを比較するけど、ファイル数は 10,000 ファイルほどある模様。
  • なので、単純な突き合わせだと、10^10 のオーダーになって爆発しそう。

な訳で、2段階踏まないと、実運用に耐えなそう。

バイナリ形式の diff は、文字単位に diff を取ればよいので、2007-03-15 – 当面C#と.NETな記録 の .NET diff class の DiffChar を使うのがよさげ。比較するのが string なので、バイナリデータを 0xFF のアルファベットに直してから比較するのが良いでしょう。

比較ファイルの絞り込みは、

  • ファイル名の比較(おそらく、似た名前で作っているハズ)
  • ファイル長さの比較(あまり違う場合は、はずすとか)

にしておけば、10^10 のオーダーではなくなるハズです。

そして、結果の、DeffResult[] が、少ない順にまとめていけば、なんとなく新旧のファイルがあつまるはずですね。

結果は、なんらかの形でレポートすれば、よかろうと。

 

ってことで、ふたみさんの作業には間に合わいそうもないけどw、ちと、この路線で明日作ってみますか。

カテゴリー: 開発 パーマリンク