Home > データ収集加工 > 全文検索
|
特長
- このシステムは、サイト内のキーワード検索を行うインデックス式の全文検索システム(EUC版)です。KentWebのトップ画面にも使用しています。
- サンプルは以下にあります。
- Key Searchの機能的な特長は以下のとおりです。
- キーワードを入力することにより、サイト内のウェブページを瞬時に検索します。
- サイト内のページをあらかじめインデックス化しておくため、(Grep型検索に比べて)検索スピードが速く、サーバに負荷をかけにくいシステムです。
- AND検索、OR検索、ソート機能(新規順・古い順)、表示件数の選択などの機能を持ちます。
- 入力されたキーワードを時系列にログ化していますので、管理画面から確認することができます。
- インデックスの作成は、管理画面からワンタッチで行うことができます。また、一度作成したインデックスは、2回目以降は差分のみ更新するので、効率良く運用ができます。
- 全画面がテンプレート式のため、自由にレイアウトやデザインを変更することができます。
- 文字コードはEUCで作成していますので、設定ファイルの編集はEUCコードの扱えるエディターで行なってください。
- このプログラムを利用する上での利用規定です。必ず目を通しておいて下さい。プログラムをダウンロードする場合、「利用規定」に同意したものとみなします。
留意事項
- 全文検索のプログラムには、大きく分けて「Grep型」と「インデックス型」とがあります。
- 「Grep型」は事前に索引(インデックス)を作成せずにファイルを順次走査していくために、検索対象の増加に伴って検索速度が低下するのが特徴です。
- 「インデックス型」は、事前に検索対象となる文書群を走査しておき、高速な検索が可能になるような索引データを準備することで検索時のパフォーマンスを向上させる手法を取ります。[参考]
- Key Searchはインデックス型ですが、その中でもかなりシンプルな構造になっています。しかし、シンプルな分、設置や運用が容易で検索スピードも速くできています。ちなみに、本格的なシステムを希望する方は、フリーソフトだと「Namazu」をおすすめします。
- 形態素解析(わかち書き)は行なっていません。
- 正規表現による検索はできません。今後ご要望が多いようであれば、検討します。
- 検索対象ファイルはテキスト系のみです。PDFやWORD等のバイナリーファイルは検索対象にはできません。
- 文字コードは「EUC」で作成しています。
- 検索及びファイル操作のロジックの一部に、「Perlメモ」を引用・参考にしました。この場を借りてお礼を申し上げます。
- インデックスの作成処理には、初回のみ新規分をメモリに貯めこんでしまうので、膨大なファイル数(多分1000を超えると厳しいかも)には向きません。今後改善を検討します。(二回目以降は、差分のみ差し替える仕様です)
プログラムの入手
- 以下の書庫ファイルをダウンロードします。
- ダウンロード後、解凍 します。解凍すると以下のファイルが展開されます。
ksearch.cgi -------------- 検索プログラム init.cgi ----------------- 設定ファイル admin.cgi ---------------- 管理プログラム check.cgi ---------------- 動作チェック用プログラム lib/Jcode.pm ------------- 文字変換モジュール [配布元] data/*.dat --------------- データファイル tmpl/*.html -------------- テンプレートファイル temp/ -------------------- 一時ファイル
プログラムの設定及び設置
- 全体のディレクトリ構成とファイル位置の設置例は以下のとおりです(かっこ内はパーミッションの設定値)。
ディレクトリ構成例
public_html / index.html (トップページ) | +-- ksearch / ksearch.cgi [705] | init.cgi [604] | admin.cgi [705] | check.cgi [705] | +-- lib / Jcode.pm 他 | | | +-- Jcode / *.* | +-- data / index.dat [606] | set.dat [606] | log.dat [606] | +-- temp [777] / | +-- tmpl / *.html
- init.cgi を、「EUC」コードの扱える エディタ で開いて以下の箇所を修正します。
- $cf{password} = '0123';
- (管理パスワードです。半角の英数字でご指定下さい)
- $cf{maxlog} = 300;
- (入力されるキーワードのログを保存する件数です。これを「0」にするとログを保存しません)
- $cf{hi_len_f} = 80;
$cf{hi_len_b} = 200; - (キーワードがヒットした際に表示する、ハイライト文字数です。$cf{hi_len_f}は前部、$cf{hi_len_b}は後部になります)
- ksearch.cgi, admin.cgi, check.cgi を「EUC」コードの扱える エディタ で開いて以下の箇所を修正します。
- #!/usr/local/bin/perl
- (プロバイダで定められたPerlへのパスを指定します)
- 以上、修正が完了したら各ファイルを所定のディレクトリへFTP転送し、以下のとおり アクセス権 (パーミッション) を設定します。
ファイル名 パーミッション 転送モード 一般サーバ suEXECサーバ
CGIWrapサーバksearch.cgi
admin.cgi
check.cgi755 or 705 701 or 700 アスキー data/*.dat 666 or 606 600 アスキー lib/*.*
tmpl/*.html- - アスキー Tips:ファイル転送の仕方は以下のページを参考にしてください。
FTP : Windows編 FTP : Macintosh編 - 以上、設定が完了したらチェックモードで動作チェックを行ないます。 「check.cgi」に直接アクセスします。 なお、動作チェック後はchekc.cgiはファイル削除しておきます。
インデックスの作成
- Key Searchは、インデックス型の全文検索ですので、あらかじめ「インデックス」を作成しておく必要があります。
- 「インデックス」を作成するには、管理画面(admin.cgi)にログインした上で行います。
- (1)は、ksearch.cgiから見て、ホームページトップを指定します(入力必須)。
- (2)は、(1)で指定するディレクトリのURLをhttp://から指定します(入力必須)。
- (3)は、検索対象ファイルの拡張子を指定します。半角スペースで挿み、複数指定することができます。ただし、指定できるのはテキスト系のみで、PDFやWORD等のバイナリーファイルは指定することはできません(入力必須)。
- (4)は、非対象(検索させたくない)のディレクトリを指定します。パス付きで指定します。半角スペースで挿み、複数指定することができます。
- (5)は、(4)と同じですが、ディレクトリ名のみを指定します。半角スペースで挿み、複数指定することができます。
- (1)〜(5)の設定を完了したら、「チェック」ボタンを押します。サイト内の対象ファイルがすべて表示されますが、このとき対象ファルが1000件を超えるようだと、ファイル数が多すぎるかもしれません(環境によります)。戻って、(4)または(5)の項目で対象ディレクトリを絞ってください。
- チェックボタンによるチェックが完了したら、「作成開始」ボタンを押します。インデックスファイルが生成されます。初回のインデックス作成は、対象ファイルが多い場合は、時間がかかります。
- インデックスは、サイト内のファイル更新があれば、その都度インデックスも更新します。インデックスの更新は、自動的に更新ファイルの差分だけを行いますので、2回目以降は短時間で済みます。
補足事項
- サイト内に検索窓を作成する場合は、トップページ等に次のようにHTMLを記述します。
ソース例 表示例 <form action="ksearch/ksearch.cgi"> <input type="hidden" name="code" value="漢字"> <input type="text" name="q" size="25"> <input type="submit" value="検索"> </form>
- せっかくですので、検索窓はデキザインを施し、クールに仕上げてみてはいかがでしょうか。たとえば、次の画面などは「検索フォームをCSSでデザインするサンプル集のデモページ」からダウンロードできます。
- 検索窓で、あらかじめ文字を入れておき、クリックすると文字が消えるという小技を使うには、次のページを参考にしてみてください。
ソース例 表示例 <input type="text" onfocus="if (this.value == '検索窓') this.value = '';"
onblur="if (this.value == '') this.value = '検索窓';" value="検索窓" />
スキンのご紹介