巻物もりもりダウンロード巻物巻物巻物表紙に戻る

GizSearch

 小規模サイト向け サーチエンジンJAVAアプレット

[特徴]  [検索方法]  [設置方法]  [入手]  [試用]

◆ 特徴

 GizSearchは、JAVA で作ったサーチエンジン アプレットです。主に、CGI が使えない & 比較的小規模なサイトを対象に考えています。……ぶっちゃけた話、自分のサイトのために作ったわけですが、もしかしたら他にも使いたい人がいるかもしれないので、フリーで公開しちまおう……というわけです。
 現時点での特徴は以下のようになっています。

[GizSearch の特徴]
長所 短所
  • JAVAアプレットなので設置環境を選ばない
  • 設置・設定が簡単
  • ちょぼちょぼカスタマイズできる
  • 約20KB というまあまあのサイズ
  • ロードさえ終わればそこそこ高速動作する
  • & や |、括弧を使った複雑な検索文が使える
  • 対象サイトのページ数や、索引キーワードの数に制限がない
  • フリー(無料・自由)である

  • JAVAアプレットなので起動するまで多少時間がかかる
  • 実は非効率的な検索方法を採用しているので、特に OR 条件での実行速度が遅い
  • 索引ファイルを手作りしなければならない
  • 検索精度・速度が、索引ファイルの出来に大きく左右される
  • 日本語コードまわりが怪しい
  • 作者がJAVAプログラミング初心者である
  • ソースコードを見ていると頭痛がしてくる……かも

 「索引ファイルを手作りしなければならない」というのが、目下のところ最大のネックです。ファイルサイズを考えなくて良いのならば、索引の自動作成はそれほど難しくないのですが、JAVA アプレットの場合、索引ファイルをダウンロードしなければならないので、サイズの問題はどうしても無視できません。
 最小限のサイズで最大限の効果をもたらす索引を作成するには、高度な日本語解析能力が必要になります。どう考えても、初心者の手に負えません。

 もし、CGI が使える環境をどこかに確保できるなら、Namazu や、msearch などの索引利用型サーチエンジンを使った方が、はるかに有用です。ローカル環境(お手持ちのパソコン)に perl をインストールし、ローカルで作成した索引をアップロードするようにすれば、CGI が使えないサイトの検索をすることができます。もちろん、これらのサーチエンジンは、命令さえ出せば索引を自動的に生成してくれますよ。

 ちなみに、作者サイトの本命サーチエンジンは、GizSearch ではありません。せっかく作ったのにね。悲しいけど、これ現実。


◆ 検索方法

 一般的なサーチエンジンとだいたい同じです。

  1. 検索キーワードを入力
  2. “search”ボタンを押すか、“Enter”キーを押す
  3. お好みのページを選んで“go”ボタンを押す
  4. “<<”ボタンを押せば検索画面に戻る

 複数キーワードを半角空白で区切って入力すると、それらの条件全部に該当するページをひっかけてきます。詳細な検索条件で探したい場合は、以下のメタキャラを使ってみてください。なお、記号はすべて半角文字です。

[使用可能なメタキャラ]
メタキャラ 意味 凡例
& 論理積 &B → A かつ B
| 論理和 |B → A または B
( ) 括弧内の条件を優先 A&(B|C) → BまたはCの結果 かつ A
\ 直後の記号の打ち消し A\&B|C → A&Bという文字列 または C

 メタキャラと単語の間に半角空白を入れても入れなくてもOK。微妙で分かり辛いのですが、“A&B”と“A & B”は同じ意味になります。

 論理演算子を使った検索なんてことをする「検索通」なら、以上の説明で分かると思いますが、そうでない方のため、具体例を交えながら補足説明をしておきましょう。

[サイト サンプル]
ページ名 検索キーワード
いぬ 尻尾
いるか ひれ 尻尾
いわし ひれ 尻尾 えら
いす 足があっても歩けません。

 たとえば、上の表のような内容のサイトがあったとします。ここで、「肺」を検索すると、「いぬ」「いるか」がヒットするのは分かりますね? この例を含め、様々な検索文とその意味、検索結果をまとめたのが以下の表です。実際に検索して、結果を確かめてみてください。

[検索サンプル]
検索文 意味 該当ページ
「肺」を持つ いぬ いるか
足 肺 「足」と「肺」を持つ いぬ
ひれ & 尻尾 「ひれ」と「尻尾」を持つ いるか
いわし
足 | ひれ 「足」か「ひれ」を持つ いぬ いるか
いわし いす
足 | えら & ひれ 「足」を持つか、「えら」と「ひれ」を持つ いぬ いわし
(足 | えら) & ひれ 「足」または「えら」を持っていて、かつ「ひれ」を持つ いわし
足\&えら 「足&えら」というキーワードを持つ 該当無し

 最初の4つは大丈夫ですね?
 「肺」を持つのは「いぬ」と「いるか」、OK?
 次の例。半角空白はキーワードの区切り、そしてメタキャラの指定がなければ、自動的にすべてのキーワードを持つページを探しに行くので、結果として「足」と「肺」を持つページ「いぬ」が出てきます。

 3番目と4番目は、論理演算子を使った例です。難しいとしたら、ここら辺りの例からですね。もしかしたら、「足 | えら & ひれ」と「(足 | えら) & ひれ」で、結果が違ってくる理由が分からないかもしれません。

 “1+2×3”は、実際には“2×3+1”の順で計算しろ、と算数で習いましたよね? 「和」より「積」の計算の方が優先順位が高いからです。それと同じ事で、一般に、“|”(論理和)より“&”(論理積)の方が優先順位がになっています。
 ただし算数には、括弧でくくった部分を優先処理するという約束があります。これは論理演算でも同じ。よって、「足 | えら & ひれ」と「(足 | えら) & ひれ」で結果が違ってきます。これは、検索式の一般法則なので、覚えておいて損はないですよ。

 最後の「足\&えら」ですが、直後のメタキャラの意味をうち消す“¥”を使った例です。特殊な意味を持つ“& | ( ) ¥”などの記号を含んだ文字列を探したいときに使ってください。直後メタキャラの特殊機能が失われ、単なる文字になります。たとえば“\100”を探すなら、検索文は「\\100」、“A&B”と“C”を含むページを探すなら、検索文は「A\&B&C」です。


◆ 設置方法

▼ 索引を作る

 まずは索引ファイルを作ります。索引ファイルは、文字コード Shift_JIS 限定(Windows ユーザーの皆さんは気にする必要ありません)、カンマ区切りのCSVファイルで、デフォルトのファイル名は“keyword.csv”。構造は以下のようになっています。

ファイル名(URL),ページ名,キーワード,キーワード,キーワード,……
ファイル名(URL),ページ名,キーワード,キーワード,キーワード,……
ファイル名(URL),ページ名,キーワード,キーワード,キーワード,……
※ 以下、延々と続く

 URL の指定は、絶対(http://aaa.com/bbb.html)でも、相対(../aaa.html)でもどちらでも構いませんが、表記が短くて澄むので、相対指定をお奨めします。

 ページ名は、検索結果の表示に使います。分かりやすいものを指定してください。なるべく短めで。でないと、アプレットの表示エリアをはみ出してしまい、ちょっと具合が悪いことになります。

 最後に、ページのキーワードを思い付くだけ記入してください。キーワードの記述が適切でないと、うまく検索できません。もし、<meta name="Keywords" content="〜,〜,〜">をしっかりと設定しているのならば、content="〜" の中身を利用してください。「はて、なんのことやら。とんと分かりませんな」という方は、表計算ソフトか何かでワシワシ手入力しましょう。ワイルドにメモ帳で入力するのもアリ。

 ここらで、索引ファイル作成のコツを。
 GizSearch は、キーワード1つ1つの中も検索する仕掛けになっています。たとえば、サンプルの索引データは以下のようになっています。

inu.html,いぬ,足,尻尾,肺
iruka.html,いるか,ひれ,尻尾,肺
iwasi.html,いわし,ひれ,尻尾,えら
isu.html,いす,足があっても歩けません。

 isu.html に注目してください。キーワードは一つ、しかも文の形で入っています。こんな形態でも「足」で検索すれば、「いぬ」と「いす」が引っかかりますし、「足 歩」で検索すると、今度は「いす」だけが引っかかります。一つの索引キーワード内から、複数の検索キーワードを探しているのです。

 極端な話、索引キーワード=要約文でも構いません。ただそれではあまりにも無駄が多いですから、重複する単語を削除し、無駄な言葉もバッサリ切りましょう。意味が分かる文である必要はありません。検索に使われそうな単語が入っている文字列であればそれで良いのです。
 ワープロソフトの「要約作成機能」を使えば、キーワード登録の手間が多少軽減することでしょう。また、文書のタイトルもキーワードとして自動登録されます。豆知識として覚えておいてください。

 この「索引ファイル作り」が、GizSearch 最大の難関です。こういう繰り返し作業は、適当なプログラムを組んで、コンピュータめにやらせるのが一番良いですよね? でも、作者の頭が悪く、今はまだできていません。作業の補助をするプログラムくらいなら、なんとかなるかも。期待せずにお待ちください。

▼ 設置する

 さてさて、写経でもやった方がよっぽど人生に対してプラスに働くのではないかという索引ファイルの準備作業が終わったら、いよいよ設置です。
 実際にアプレットを設置するHTMLファイルと同じ場所に、アプレット本体“GizSearch.jar”と、索引ファイルを置き、以下のようなHTMLを書いてください。

<applet archive="GizSearch.jar" code="classGizSearch.GizSearch" width="*" height="*">
  <param name="keyword" value="索引ファイル名">
  <param name="*" value="*">
  <param name="*" value="*">
  ※ 以下、延々と続く
</applet>

 “*”には様々な値が入ります。サンプルのHTMLファイルに、コメントの形で説明を入れておきました。「メモ帳」等のテキストエディタで開いてご確認を。

 では、試験実行してみてください。どうですか? うまく行かない場合は、<param>タグの設定を見直してください。すべてデフォルトの設定で行くなら、<param>タグはすべて不要です。一度ざっくり削ってみると良いでしょう。また、JAVAコンソールを使うと、問題の箇所を指摘してくることがあります。JAVAコンソールの表示方法が分かる方は試してみてください。

 これで駄目なら、一度Webサーバにアップロードして、試験してみてください。それでも駄目なら、メールをください。できる範囲内で対処します。JAVA 初心者なので、過大な期待はしないでくださいよ。なお、フリーソフトの常として、どんな障害が起きても、作者は責任を取りません。サポートの義務も負いません。

◆ 入手

JAVA Applet "GizSearch" 58KB [direct]
ver.1.0 finalβ 公開 2001/10/21

アプレット、簡単なドキュメント、設定サンプル、ソースが入っています。
ソースは本来公開できるレベルのものじゃないんですけど、無いよりはあった方が良いですよね? 変なところがあったら、適当に改造してください。で、よろしければメールで連絡してください。可能ならば改善を試みます。
正式公開時には、GPL か、それに準ずるライセンスを設定する予定です。もちろんフリーであることが大前提。

 履  歴

β2→finalβ
・微妙に高速化。
・索引中の無名ページに、"no title"をセットするようにした。



Copyright (C) Shu Koyama 2001
No reproduction or republication without permission.

koyamas@dream.com

禁無断転載

表紙に戻る