イントラ実験室2 イントラネット(IIS)に全文検索を

まえおき[2004-05-16] [2008-06-15 Update!]

イントラ内でもGoogleのような検索エンジンががあればいいなと思い,探し当てたのがNamazuだ。これをうまく利用すれば,膨大な共有ファイルの中で「あの書類ってどこにあったっけ?」「そういや,あの専門用語を解説してる文書があったはずだけど」なんてときにばっちりだ。早速インストールしてみよう...だけど,その前にシステム構成を再確認しておこう。

サーバーOSWinsows2000ServerなんのかんのいってもMicrosoftは偉大だ,簡単セットアップが嬉しいぞ(^^; それに全体的にはActiveDirectoryで構築されてるみたいだから他のOS入れると浮いてしまう(^^;;
Web
サービス
InternetInformationService
(IIS)
だっておまけで付いてるから(^^;
クライアントWindows2000
InternetExplorler
上の理由と同じだ(^^)

Namazu for Windowsのインストール[2004-05-16] [2008-06-15 Update!]

http://www.namazu.orgからWindows版の最新版(執筆時点では2.0.18)をダウンロードする。解凍したらその中にある『README-ja.txt』に書かれているとおりにインストールを進めれば基本的にOKだ。個々の環境による注意点のみ以下に記載する。

対応ファイル形式を増やすぞ[2004-05-16] [2008-06-15 Update!]

Namazu for Win32がデフォルトで対応しているのはtext,html等のテキストベースのファイルだ(現在有効になっている対象データ形式は,コマンドプロンプトから 「mknmz -C」と入力することで表示されるぞ)。MicroSoft Officeの文書データについてはOfficeをインストールすれば対応するが,Namazuのためだけにサーバー機にOfficeをインストールするのはライセンスがもったいない。ここではxdoc2txtを使用する方法を紹介しよう。xdoc2txtを使用するとpdfファイルにも対応するぞ。

xdoc2txtは各種ファイル形式の文書をテキスト化してくれる便利なフリーソフトだ。EB series support pageからダウンロードしてこよう。解凍したファイルのうち「xodc2txt.exe」と「zlib.dll」をどこかパスの通った場所(ここではc:¥namazu¥binとする)にコピーする。これだけでOffice・pdfデータにも対応できるから簡単だ。

Indexを作って検索してみよう[2004-05-16] [2008-06-15 Update!]

Namazuでの検索のためには事前にIndex(要するに目次)を作っておく必要がある。イメージとしては,目的の単語を調べるために全文章から探し出すよりも目次から探し出せば格段に速いということだろう。そのためのコマンドがmknmzだ。コマンドプロンプトから

c:¥>perl c:¥namazu¥bin¥mknmz -U -e c:¥Inetpub¥wwwroot -O c:¥namazu¥var¥namazu¥index 1>c:¥temp¥nmz.log 2>c:¥temp¥nmzer.log

を実行してみよう。IISのフォルダ(c:¥Inetpub¥wwwroot)内のファイルに対してIndexを作成してくれるぞ。mknmzの各オプションについてはNamazuのマニュアル(c:¥namazu¥share¥namazu¥doc¥ja内だ)をみてもらえるとありがたい。

エラーもなくIndex作成が完了したらnamazuコマンドで検索してみよう。(例えば,「トップページ」という単語が含まれている「c:¥Inetpub¥wwwroot¥index.html」があった場合),「トップページ」について検索すると,

c:¥>namazu トップページ
検索結果
参考ヒット数:  [ トップページ: 1 ] 
検索式にマッチする 1 個の文書が見つかりました。
1. index.html (スコア: 2)
著者: 不明
日付: Thu, 13 May 2004 23:03:37
トップページ
/c|/Inetpub/wwwroot/index.html (14 bytes)

現在のリスト: 1 - 1

と表示されるはずだ。はい,完成です。パチパチ...(^^)...まだまだこれからだ

ブラウザからアクセスするためには?[2004-05-16] [2008-06-15 Update!]

Namazu for Windowsのインストール』項でインストールした『namzu.cgi.exe』にブラウザからアクセスしてみよう。以下の表示(一部を抜粋した画像だ)が出るはずだ。ここの『検索式』に検索したい単語を入力すればOKだ。

Namazu検索画面例

試しに『インジェクション』を入力してみると以下の検索結果(一部を抜粋した画像)が出たぞ。

Namazu検索結果例1

「できた,できた」と言いたいが,よく見ると『/c|/』みたいな変な記号(?)が付いているし,リンクをクリックしても目的の文書が開かない。これじゃ,ダメだ。 これを直すには,『Namazu for Windowsのインストール』項で作成した『.namazurc』を編集する必要がある。『.namazurc』をエディタで開き(テキストファイルだ),『#Replace』で始まる行の下にでも以下を追加だ。

Replace    /[Cc]¥|/Inetpub/wwwroot/    http://IISサーバー名/

『IISサーバー名』はそれぞれの環境に応じて変更だ。ここでは例として『127.0.0.1』にしてみた。これでもう一回検索してみると,

Namazu検索結果例2

と,ばっちりだ。要するにローカルのファイルをwebサービスのアドレスに変換するためのものって事。

こんなのがあると便利[2009-04-30[

これでイントラ内の文書ファイルを検索することができるようになったわけだが,これはあくまでも静的ファイルに限ったもの。 データベースに登録されている情報を元に動的に作成されるページについてはこれでは検索できない。 さてどうするか...「イントラ実験室2の1」を参照のこと