キーワードで検索し、マッチしたデータを取出せるような仕組みを作ってみます。
今度は送信される内容が少ないので GETメソッドを使って内容を送信しています。
GETメソッドで送信したデータは環境変数 $ENV{'QUERY_STRING'} に入っています
ので、それを要素ごとに分解し、連想配列に入れて使います。
このサンプルソースでは、上記フォームから何らかのキーワードを入れて検索すると、
test.txt というファイルを
読み込み、それぞれの行で検索語にマッチしたデータかどうか判断し、その都度表示します。
ファイルの最後まで行い、最下部に検索でキーワードにマッチした件数を表示して終了します。
記録ファイルを配列に入れ foreach関数で繰り返し、マッチするデータを順次表示しています。
これでは全てを表示してしまうので、ある程度の件数で区切ると良いです。
実際には記録ファイルが大きくなると、その全てを探すので効率が悪く、負荷が高くなりますが、
1件当りのデータ容量が少なければ、数百件程度であれば快適に検索できます。
大量のデータを扱う時はインデックス方式と呼ばれる、記録ファイルから抽出したキーワードを
格納するインデックスファイルを先に生成し、そこから検索する方法が優れているようです。
下の参考リンクで優れた検索エンジンがありますので、それらも参考にして下さい。
【参考リンク】
・ ホームページ内全文検索エンジン msearch 「比較的簡単に設置できて高速です」
・ 全文検索システム Namazu 「設置できる環境であれば少し難しいですがお薦めです」
|