◆サイト内検索エンジン導入レポート


 2002年1月頃から、サイト内検索エンジンを導入しています。

 サイト内検索 ― つまり「ニュージーランド トランピング&温泉情報」のすべてのコンテンツ内から特定のキーワードを含むページだけをピックアップするシステムのことです。新聞社など大手企業のホームページではあたりまえに使われています。

 「ニュージーランド トランピング&温泉情報」では、いちおう情報提供サイトを目指しておりまして、開設以来約3年たち、それなりに情報も蓄積されてきました。しかしページの作り方が悪いせいで、読み手がほしいと思った情報にたどり着くのは必ずしも容易でないようです。

 トレッキング・旅行関係の問い合わせのメールをよくいただきますが、「それなら○○に書いてあるんだけどなぁ…」ということが少なくありません。

 まあ、それはひとえにサイト構成がよくない(タイトルが適切でない、1ページにたくさんの情報を盛り込みすぎる、etc.)のだと反省している次第でありますが、サイト構成をイチからやり直すのは大仕事。そこで全文検索システムを導入するのも手かなとと考えたわけです。

 お気づきのようにトップページをはじめ、サイト内何ヶ所かに検索フォームを設置してあります。皆さん活用してくださっているようですが、実はいま使っているシステムは3代目になります。今でこそ高速で安定した検索が実現できていますが、ここにたどり着くまでには試行錯誤がいろいろありました。

 せっかくなのでここで過去を振り返って、一個人がプロバイダのディスク・スペースでサイト内検索システムを設置する方法を整理しました。これから検索システムの導入を考えているウェブマスターの皆さまの参考になればさいわいです。


以下の検索フォームはすべて稼働中です。ご自由にお試しください。

  もっともお手軽! 検索エンジン Google を流用

Google_logo
= サイト内を google.com で検索します =

業界でシェアナンバーワンのロボット型検索エンジンのグーグル Google を流用したサイト内検索です。なによりの特徴は設置が簡単なこと。自分のホームページのHTMLにコードを貼付けてちょっとアレンジするだけでOK。CGIプログラムが許可されていないサーバでも使えるのは大きな強みです。検索速度が速いのも感激もの。

欠点は、必ずしも Google に自分のサイト内ページのすべてが登録されているとは限らないこと。また更新がすぐに反映されないこと(通常1.5ヶ月くらいのタイムラグがあります)。また厳密なサイト内だけの検索にはならない場合もあります。

設置方法は、下記のソースコードを自分のページのhtmlに貼付けて、4行目と5行目を書き換えるだけでOK。独自ドメインを使っているなら、5行目は削除して構いません。

<form onSubmit="addstring()" action="http://www.google.com/search">
<input type="hidden" name="hl" value="ja">
<input type="hidden" name="ie" value="Shift_JIS">
<input type="hidden" name="q" value="site:homepage2.nifty.com">
<input type="hidden" name="q" value="treknz">
<input type="text" name="q" size="27" maxlength="256" value="">
<input type="submit" name="btnG" value="検索">
</form>

赤字部分が変更箇所


動作の仕組みですが、通常の Google 検索に条件を付加することで、うまく自分のページだけから検索されるようにしています。それが4行目と5行目です。4行目は検索先ドメインを限定オプション。その名のとおり、ここで指定したドメインの中から検索をするようにという指示をしています。独自ドメインを使っているならこれだけでサイト内検索の働きをします。しかしプロバイダのディスクスペースの場合、"homepage2.nifty.com/treknz/"というように、ドメインの下層のディレクトリ単位でユーザに割り当てられています。残念ながら Google ではディレクトリ単位までの指定はできません。

そこで登場するのが5行目。ここで treknz という"キーワード"を検索条件に加えています。つまり homepage2.nifty.com ドメイン内で treknz という文字列が含まれるページの中からのみ検索しろと指定しているわけです。私のサイトの中では、各ページ下部の著作権表示の部分に、トップページのURLを記述しています。ここがキーワードになっているわけです。もし仮に同じドメインに設置された別の誰かのHPに treknz という文字列が含まれていると、それもヒットしてしまうため、他ではありえないような特徴的なキーワードである必要があります。

ですから、あらかじめ検索対象にしたいページすべてにキーワードを記載しておく必要があります。ただしこれから新規にキーワードを記載する場合は Google の次回のクロールを待たなくてはなりません。これには1〜1.5ヶ月くらいかかります。

以上が、グーグルを流用してサイト内検索をする基本原理です。実際のところ、わざわざ新たにキーワードを埋めこまなくても、ドメイン以下のトップディレクトリ等を検索条件に入れてやっても、同じ効果があるようです。

どういうことかと言いますと、"homepage2.nifty.com/treknz/"のなかの treknz を検索ワードに含めておくと、必ずしも treknz が文字列として含まれていないページでもヒットするのです。例えば 著作権について というページ内には、treknz という記述は一切ありません。しかし、googleでは「これらのキーワードは、このページにむけて張られているリンクに含まれています: treknz」ということでヒットします。

つまり、プロバイダのドメイン以下の自分に割り当てられているディレクトリ名をキーワードにすれば、それ以下のページはすべてヒットすると考えられます。ただし、ディレクトリ名が一般的なもの、例えば photo などというものだと、プロバイダの同じドメイン内にある関係ない他人のサイトまで引っかかってしまいます。特徴的なディレクトリ名を使用しているときのみ、できる方法でしょう。

***

とにかく手軽にサイト内検索を実現したいという人には、急ぎさえしなければいちばん手軽でお勧めの方法です。ついでながら Google に限らず goo などの他の検索エンジンを利用して同様のこともできます。詳しくは各エンジンのホームページの解説をご覧ください。まあ、現時点では、取りこぼしがないという点からグーグル googleがベストでしょうね。

  grep 型CGI検索エンジン WwwSearch

AND OR

WwwSearch は、私がいちばん最初に試した全文検索エンジンCGIプログラムです。設置が簡単なのがなによりのウリ。grep 型といって、サーバにアップしてあるファイルを横断的に検索して、ヒットしたページの情報を吐き出す仕組みになっています。検索の度にすべてのファイルを検索するので、サーバ負荷が大きく、検索に時間がかかるのが欠点。ファイル数が100以下程度なら設置の容易さも手伝ってとても便利につかえる検索エンジンです。

現在の拙サイトの検索ファイル数は約200弱(2002年7月現在)。数自体はたいしたことないのですが、1ページの分量が比較的多いせいか、ヒット数が多いとちょっと重い感じがしてきたので、いまは現役を退いてもらいました。まあ、その速度については実際に試してみてください。個人ページであれば実用上は問題ないと思います。和歌山市やいわき市の自治体ウェブサイトで使われている実績もあります。

CGI配布先⇒ とほほのWWW入門


  今のところ決定版! インデックス型検索エンジン msearch

HP内検索エンジン (msearch) help

より速いサイト内検索エンジンを! と思って試してみたのが、インデックス型と言われるタイプのCGIスクリプト msearch です。先のgrep型は、検索するたびにすべてのファイルを参照するため動作が遅くなるのが欠点でした。ファイル数が増えれば増えるほど、遅くなります。その問題を解決するために考えられたのがインデックス型検索エンジンで、ファイルを直接検索するのではなく、ファイルをもとにあらかじめ作成しておいた見出し一覧(インデックスファイル)から検索するというタイプです。検索速度は格段に速くなるのですが、インデックスの分だけディスク容量を食うのが欠点です。

またインデックスファイルの作成という行程が必要となり、それはHP更新の度に行なわなければなりません。そのためやや上級者向けと言われています。

一般に小規模ならgrep型、ファイル数が増えてきたらインデックス型が勧められています。うちのサイトの場合、まだgrepでいけるのですが、ものは試しにとインデックス型を試用してみたら、その桁違いの速さにビックリ。もうgrepには戻れなくなってしまいました。

インデックス型にはさまざまなフリーの検索ソフトがあるのですが、なかでも選んだのは msearch というスクリプトです。CGI掲示板を設置できる程度の知識があれば簡単に導入でき、その後のインデックス作成もウェブ上から気軽にできて、とっても敷居が低いのが気に入りました。

それでいて検索速度は Google 並で、検索結果画面のカスタマイズも容易。さいたま市や東京都町田市、西日本新聞などで採用されており実績もばっちりです。今現在、拙サイトのメインの検索エンジンとして活躍しています。

インデックス型は設置がたいへんだと聞いていたので、以前は見向きもしなかったのですが、今となっては設置の難易度は WwwSearch と変らなかったかなと思っています。フリースクリプトのCGI掲示板を自分で設置できる程度の知識があれば簡単に扱えるはずです。インデックス・ファイルとして検索ファイル合計容量の半分程度のサーバー・ディスク容量が必要になりますが、それさえ問題なければ、設置の容易さ・検索速度から言ってもっともお勧めできるスクリプトです。

CGI配布先⇒ ホームページ内全文検索エンジン msearch

  その他 応用編

サイト内検索(msearch)

help
Google Yahoo! サイト内(Namazu)

上記ふたつはサイト内検索の応用です。ひとつの検索窓で、msearch を使ったサイト内検索と、Google や Yahoo! といったふつうの検索を使い分けられるようにしたものです。

上のがフル機能バージョン。サイト内検索の他、Yahoo、goo、Fresheye、Lycos、Excite 検索のほか、国語辞書、英和辞書、和英辞書、新語辞書などの検索も一発でできます。

下のは、自分がよく使う機能だけをシンプルにまとめたもの。そのうちこれをトップページに入れようかと思っています。

以上、2つは実体は同じもの。ホームページと検索エンジンサイトを橋渡しする C-SEARCH というCGIスクリプトを利用しています。最新版ではさらに多種多様な検索ができるようになっているみたいです。詳しくは下記のダウンロードページへどうぞ。

注記:2005年10月現在、C-SEARCH開発者のウェブサイトは閉鎖されてしまい、スクリプトは入手困難な状況のようです。

CGI配布先⇒ C-SEARCH

  サイト内検索システム 今後は…

msearch で基本的には大満足なのですが、強いて希望をあげるなら、アンカー単位での検索ができたらいいのになぁと思っています。アンカーというのはページ内での特定の部分へジャンプするためのタグ。「よくある質問」コーナーなどを見てもらえばわかりやすいのですが、1ページが長い場合、これがあるなしでユーザビリティはぜんぜん違います。

実際問題、例えば「トランピング用語集」の場合、2002年7月現在158の語句が登録されています。全文検索でこのページがヒットしても、ページの中から目的の部分を探し出すのは至難の業。つまりこういう場合はページ単位でヒットする検索ではあまり意味がありません。(まあ、ブラウザのページ内検索機能 [Ctrl]+[F] を使えばいいのですが…)

アンカー単位で検索ができれば、これはすごく便利です。単語ごとにアンカーを設定しておけばそれこそホントに辞書感覚で使えるようになります。道具講座のページなども便利になるはず。もっともすべてのアンカーごとに引っかかったらヒット数が増えすぎて反対に検索効率が悪くなるという問題もあるので難しいところ。設定で切り換えができるようになっていればよいのかもしれません。(スイマセン、素人が勝手なこと言ってます)

あともうひとつの要望は、htmlやテキストファイルだけではなく、PDFファイルも検索できればなということ。あと Word や Excel ファイルなんかも検索できればデータベースとしての活用法も拡がるのに。そんな検索エンジンないのかなぁ…

・・・実はあるのです! それが純国産の Namazu ナマズ という日本語全文検索システム。誰でも無料で使えるフリーソフトながら、国立国会図書館をはじめ、各省庁や大手企業で採用されている日本標準とも言える検索エンジンです。

オプション追加で PDF や Word、Excel、PowerPoint、一太郎 ファイルも検索できるほか、「分かち書き」によって「自分の手で掘る温泉の探し方」などといった文章での検索も有効に行なえます。また単語の出現回数によってページのランク付をしてくれたりと、検索エンジンとしては至れり尽くせりのまさにパーフェクトな検索ソフトなのです。

究極的には、勉強を兼ねてこの Namazu を設置してみたいのですが、ふつうのCGIに比べるとファイル構成が煩雑で、「分かち書き」用辞書(Kakasi)ファイルが必要だったり、ちょっとシステムが大がかりになります。自分の技術的にもいまいち理解できない部分があるので、保留中。


ということで、以上、最近ハマっているサイト内検索エンジン設置にまつわるあれこれでした。


その後、Namazu の試験導入に踏み切りました。
全文検索システム/Namazuの実験ページ をどうぞ。


( 秋場 研 2002.7/10 )


バックパッカー旅入門コースガイドNZの山事情温泉情報ワーキングホリデー  MENUNEXT  HOME

ニュージーランド・トランピング&温泉情報(by秋場研)
Copyright © AKIBA Ken
e-mail : AKIBA_Ken