20年ぶりにWordファイルの横断検索をやってみた
こんにちは。
大量の仕様書がWordファイルで作られていて、その中から探し出すという必要性に迫られました。いまは令和も5年。いまの時代、どうやって全文検索できるのでしょうか?
昔はどうしていたか
私が20代前半の頃、平成10年~15年の頃の話ですが、全文検索システム Namazuを使って、Wordファイルの横断検索をしていました。HP-UXにApacheを導入して、CGIとして動かしていたと思います。HP-UXとかCGIとか懐かしいですね。
久々に探してみたら、まだNamazuのサイトが残っていました。さすがにもう開発は停止しているようです。
http://www.namazu.org/index.html.ja
Microsoft OfficeのWordやExcelなどを使い出したのは、私は社会人になってからですが、とにかく職場では不評でした。バイナリファイルなので、grepを使って検索はできないし、diffで差分も取れません。使えないじゃん!
Officeファイルの横断検索をしていたのは、このときぐらいで、それから久しくはやっていなかったと思います。
いまでも全文検索できるよね?
あれから20年が過ぎました。調べてみると、いろいろな方法でOfficeファイルの横断検索ができるようになっていました。
エクスプローラーで検索する
Windowsのエクスプローラーで、ファイルの中身も含めて検索することができます。ただし、フォルダーオプションの設定が必要です。
バイナリファイルをgrepする
FavBinEditというバイナリエディタがあり、最近愛用しています。このソフトにはgrep機能が搭載されており、バイナリファイルを検索することができるのです。
バイナリエディタ | FavBinEdit (wabiapp.com)
Wordファイルの拡張子が.docのものは、文字コードがUTF-16(LE)で文字列が保存されています。
Wordファイルの拡張子が.docxのものは、このやり方での検索は難しいです。.docxはZIP圧縮されているので、一度展開(解凍)する必要があります。文字コードはUTF-8で、文字列が格納されています。
MiGrep2を使う
MiGrep2というツールと、xdoc2txtというツールを組み合わせることで、WordやExcelなどのOfficeファイルに加えて、PDFファイルも全文検索できます。
https://www.vector.co.jp/soft/winnt/util/se515999.html
http://ebstudio.info/home/xdoc2txt.html
最初に設定が必要ですが、一度設定すれば、あとは楽に検索ができるようになります。
このやり方だと、大量のOfficeファイルがあっても高速に検索してくれました。とてもありがたいですね。
素敵なソフトウェアを作ってくださった作者様に感謝します。
おわりに
MiGrep2はヘルプによるとDelphiで作ってあるようです。懐かしいですね。私が大学の授業ではじめて学んだプログラミング言語が、Pascalでした。その後、個人的にBorlandのDelphiコンパイラを買って、独学していた時期もありました。
あれからもうPascalを使うことはなくなり、言語文法も忘れてしまいましたが、あのとき学んだプログラミング体験は、いまの自分にも活かされています。