ホーム > HTMLに役立つヒント>
Splendid Search導入記
これはAfrisoftさんの開発した全文検索システム、Splendid
Search1.61導入記です。こちらでテストしています。
「検索テスト」ページも参照してください。
2006/4/12 トップページがなくなってました。でも配布は継続しているようです。
2003/4/30 しばらくぶりにいってみると、1.7の開発は放棄されたようで、2.0の開発がスタートしたとのこと。リリース日等は未定。
2002/2/4 1.7β3が公開テスト中です。2002/2/4からファイルの配布も始まりました。暫定的に1.7β3メモを追記しました。
2001/8/20 1.7β2が公開テスト。2001/9/9からファイルの配布も始まりました。β1に比べてぐっと検索スピードがアップしました。暫定的に1.7β2メモを追記しました。正式配布となったらこのページ全体を1.7に合わせて書き換える予定です。
2001/5/10 1.71βがリリースされました。R1.6からは管理機能が強化されています。以下の記述はR1.6のものですが、感想にでてくる「取りこぼし」問題はR1.71βでは解消されました。代わりに検索スピードが落ちました。詳しくは上記の「検索テスト」ページを参照してください。
[改定日: 06/04/13 20:40] あなたはここへ来た、 14407番目の人です。(2001/8/2から)
導入目的は「KISS-Search導入記」を参照してください。
●Afrisoftから必要なファイルをダウンロードしてきます。このとき、登録が必要になりますが、登録すると後でマニュアルを入手できるそうです。
特に難しいことはありません。cgiを設置したことのある人なら、マニュアルを見ながら楽々インストールできます。
「assdata」フォルダをcgiの入ったフォルダ直下におかなかったため、エラーを出してしまった。この時のエラー画面、バックが黒でも文字も黒なので、一見何も表示されていないように見える。
次に引っかかったのが、「default.dir」。ここで指定するとき、必ずURLとパスを「,」区切りで入れなくてはいけない。これを怠るとインデックス作成の際にエラーとなる(R1.7βで管理画面で行えるようになり、この種の間違いは減ると思います。従来通り、default.dirを直接編集することもできます)。
引っかかったのはこの2つだけで、あとはスムーズにインストール完了。割と簡単。
●ブラウザで管理用cgiにアクセスします。初回は管理者パスワードを設定する画面に自動的に飛びます。
管理画面が表示されたら、ボタンを押せばインデックスの作成が始まります。簡単簡単。
文書一覧ファイルを作成してからインデックス作成となる。
452件のファイルをインデックスするのに7分ほどかかった。
文書一覧ファイルのサイズ = 65,101 バイト
索引ファイルのサイズ = 1,115,004 バイト
索引件数 = 13,852 件
だそうです。
インデックスの更新にかかった時間は約5分程度でした。
単語1つの場合
・「28mm/」 8秒で表示。ヒット数54件。次の10件の表示にやはり8秒ほどかかった。
比較:とほほサーチでは2秒後に表示が始まり、全部表示されるまでに9秒かかった。ヒット数54。
・「単焦点」 3秒で表示。ヒット数40件。次の10件の表示にやはり3秒ほどかかった。
比較:とほほサーチでは2秒後に表示が始まり、全部表示されるまでに6秒かかった。ヒット数194。
これは困った。ヒット数が違いすぎる。Splendid Searchでは150もの見落としをしていることになる。
複数の場合
・「28mm/ 単焦点」 7秒で表示。ヒット数15件。次の10件の表示に6秒ほどかかった。
比較:とほほサーチでは1秒後に表示が始まり、全部表示されるまでに6秒かかった。ヒット数23。
ここでもヒット数が違う。正しいのはとほほサーチの方。
・「ズーム 105mm/」 12秒で表示。ヒット数16件。次の10件の表示に9秒ほどかかった。
比較:とほほサーチでは1秒後に表示が始まり、全部表示されるまでに7秒かかった。ヒット数16。
肝心の検索で取りこぼしが発生するのは困りもの。
検索されるファイルの方が悪いのかと、EUCになっているか見てみたが、Splendid Searchが取りこぼしたファイルはちゃんとEUC/LFになっていた。もちろんキーワードも入っている。なのに検索するとヒットしない。ウ〜ム。
念のため、もう一度インデックスを作り直して再度検索してみたが、結果は変わらなかった。
「3倍ズーム」というキーワードでもやってみたが、Splendid Searchが37件に対してとほほは97件のヒットである。「現行品」で試すとSplendid
Search175件に対してとほほは198件。
なぜこんな取りこぼしが発生するのか、原因は不明である。いったい何なんだろう。
ちなみに、Splendid Searchのインデックス作成では452ファイルとなっているが、対象ファイル数は451のハズなのだった。
・単語の区切りが半角スペースでなくてはいけないこと。全角でもOKにしてほしい。
・検索結果が多く、複数ページに渡る場合、「次の10件の表示」ボタンではなく、「[1][2][3][4]」などのようにして、直接離れたページにジャンプするようにしてほしい。
・キーワードの前後の表示行数を指定できるようにしてほしい。
・スピードはやはり速いとはいえない。とほほサーチと互角か、それより遅い検索スピードである。4、500程度のファイル数ではインデックスの強みが発揮できないのだろうか。ターゲットにしているのが「中規模」というだけなので、具体的にどの程度のファイル数で強みを発揮するのか不明なのは残念。
・取りこぼしがでるのは大きな問題。
改良版がでることを望みたいです。
しかし、いったい原因は何なんだろう。こちらの設定ミスなんだろうか?(冒頭に書いたように、R1.7βで取りこぼしは解消されたようです)
●1.7β配布 2001/9/9から、1.6登録者を対象に配布が開始されました。
ass17b2.tar.gzを解凍します(telnetしてzcat ass17b2.tar.gz | tar xpf -)。なぜか、解凍するとできるファイルの名前がすべて大文字になっています。cgiファイルの中身などを見ると、小文字で指定されていますので、これはパッケージの時のミスではないかと思われます。解凍後、ファイル名はすべて小文字になおしました。
ほんとはバージョンアップなわけですが、インデックスも前のバージョンのものは使えないようなので、これまでのものは削除して新規にインストールしました。
各cgiファイルの中を設定し、アップし直してパーミッションを設定します。付属のreadme.pdfにインストール方は書かれていますので、ここでは割愛します。
sysman.cgiにアクセスすると管理画面が表示されます。以下、引っかかった点を列記します。
●カテゴリの作成
まずは検索カテゴリに「camera」と入力して「新規作成」をクリックします。
このとき指定したカテゴリ名は、そのままインデックス名として使われるため、必ず英数字である必要があります。日本語を使ったり、カテゴリ名の中に「/」や「*」などを使うとまずいでしょう(たぶん)。
このあたり、β版のマニュアルには記載がありません。注意書きがほしいところです。●検索対象の定義
次に検索対象フォルダ定義を変更します。ここで先ほど作成した「camera」を指定して「変更」をクリックします。
問題はここででました。この画面で指定できるフォルダの数が25までなんです。カメラのデータはメーカーごとにフォルダわけされていて、26あります(^^;
しかたないので、最初の項目だけ入力してとりあえず「camera.dir」を作成しました。
次にFTPソフトでアクセスし、今作ったインデックス定義ファイル(camera.dir)をダウンロードします。このファイルに直接26個の定義を書いてアップロードしました。
定義の書き方はこんな感じです。必ず「/」を最後に付けます。「/canon」ではいけません。ファイルと見なされます。http://www1.kiwi-us.com/~mizusawa/penguin/CAMEdata/canon/,../canon/
また、.dirの最後は必ず改行を入れましょう。「../canon/」で終わってはいけません。「../canon/+改行」でないとインデックス時にエラーがでます。これに引っかかってしまった(^^;
なお、.dirをアップロードする際にパーミッションではねられてしまいますので、ちょっとしたテクを使います。まず、サーバ上の「camera.dir」の名前を適当に変更して、それから削除します。次に手元のcamera.dirをアップして、パーミッションを666にします。
●インデックスを作る。
索引の作成で「camera」を指定して「作成」をクリックします。
インデックスは733ファイルを対象にして11分ほどかかりました。.htmファイルまで拾ってしまうため、733ファイルになっていますが、本当に検索させたいのは.htmlファイル706ファイルだけです(706.html+26.htm=732のはずですが、なんか混じってるみたいです)。
インデックスするファイルの種類を指定するオプションがほしいところです。索引ファイルの作成が完了しました。
更新日時 Mon Sep 10 14:33:16 2001
検索対象フォルダ定義ファイル名 assdata/camera.dir
文書一覧ファイル名 assdata/camera.lst
文書一覧ファイルのサイズ 117,675 バイト
検索対象文書数 733
索引ファイル名 assdata/camera.idx
索引ファイルのサイズ 1,621,965 バイト
索引文字成分数 19,352●検索対象ファイル一覧
これは検索対象となるファイルを一覧するためのものです。テーブルで書き出されるため、ファイル数が多いと表示されるまでにちょっと時間がかかります。
文書番号、URL/ファイル名/タイトル、更新日、大きさが出力されます。
さて、default.qrをデフォルトのままにすると、defaultインデックスを検索しようとします。そこで、次の点を変更しておきます。
●オリジナル
# 検索カテゴリの選択ラジオボタンを表示する場合は、以下をコメントにしてください。 #<INPUT TYPE="hidden" NAME="SET" VALUE="%SET%">●変更後
# 検索カテゴリの選択ラジオボタンを表示する場合は、以下をコメントにしてください。<INPUT TYPE="hidden" NAME="SET" VALUE="camera">
これでcameraインデックスを検索するようになります。
「索引検索のみ」の場合は以前のように何秒もかかることはなくなりました。「索引検索で絞り込み後、文書内容検索」にするとやはり相当スピードは落ちますのでおすすめできません。
ストップワードが検索語句に入った場合、不具合があるようです。この点と、具体的な検索スピードについては「検索テスト」を参照してください。
インデックススピード・検索スピードからして、小規模向けといっていいでしょう。中規模ではサーバ負荷が高く、ちょっとつらいです。
不満な点を列記します。些細なことに見えるかもしれませんが、いずれも使い勝手に大きく響きます。
●検索後、フォームの中に検索語が自動的に入らない。
検索すると、毎回キーワード入力欄は空欄となります。続けて絞り込んだりするときに不便でしかたないです。
●表示件数、検索対象、ソート条件、内容表示、検索方法が検索するとデフォルトに戻ってしまう。
毎回毎回指定し直さなくてはいけません。
●検索結果ページの移動方法
「次の○○件の表示」「前の○○件の表示」で移動する方式のため、必ず隣接したページを順番に追って行かなくてはいけません。
改造メモ
===========================================================
CPU時間を表示する。2ファイルの変更が必要です。
smplsrch.cgiの変更
●オリジナル
#!/usr/local/bin/perl #↑Perlの置いてあるパスを指定して下さい。 # # このスクリプトは、[ 日本語EUCコード ] で保存して下さい。
●変更後
#!/usr/local/bin/perl #↑Perlの置いてあるパスを指定して下さい。 ### 計算時間測定開始 ### スクリプトの頭の方に書く $CPU_start = (times)[0] ; # # このスクリプトは、[ 日本語EUCコード ] で保存して下さい。
srchidx.plの変更
●オリジナル 194行目付近
} else {
&ViewErrEx( '0015', '' );
}
exit;
}
●変更後
} else {
&ViewErrEx( '0015', '' );
}
### 計算時間測定終了
### スクリプトのHTML出力部分に書く
$CPU_end = (times)[0];
printf("<DIV align=right>消費時間: %.3f CPU秒</DIV>\n",$CPU_end-$CPU_start);
exit;
}
===========================================================
●1.7β3配布 2001/2/4から、1.6登録者を対象に配布が開始されました。
β2をβ3にアップデートしました。手順はマニュアルにあるとおりで、特に難しくはありません。
ひとつだけ引っかかったのはパーミッションの変更です。β2から3に変更するには、assdataディレクトリ内の次のファイルのパーミッションを644から666に変更する必要があります。
データフォルダの次のファイルのアクセス権を読み書き可能(パーミッション 666)に変更します。
ass.cfg(初期設定ファイル)
status(ステータスファイル)
********.dir(検索対象フォルダ定義ファイル)
********.lst(文書一覧ファイル)
********.idx(索引ファイル)
このとき、FTPからは素直に変更してくれなかったため、1.いったん手元にダウンロード、2.サーバのassdataディレクトリを削除、3.手元にダウンしたものをアップロード、4.パーミッションを設定し直す、という手順を踏みました。
例によってログインして作業します。インデックスのアップデートには約14分かかりました。β2のインデックスと共通のようですので、これはインデックスの更新作業ということになります。一から作るともっと時間がかかるでしょう。
更新日時 Tue Feb 5 11:24:38 2002
検索対象フォルダ定義ファイル名 assdata/camera.dir
文書一覧ファイル名 assdata/camera.lst
文書一覧ファイルのサイズ 121,448 バイト
検索対象文書数 756
索引ファイル名 assdata/camera.idx
索引ファイルのサイズ 1,697,973 バイト
索引文字成分数 20,106
僕が対象にしたいのはhtmlファイル729ファイルだけなんですが、756ファイルがインデックスされています。インデックス対象の指定はhtmlファイルだけのはずなんですが(?_?)
追記:
上記はass.cfgが1.7b2のままでインデックスしています(sysman.cgiの自動アップデート機能が働いているはず)。手元のass.cfg(1.7b2版)に1.7b3で追加されたMSG_BTNNEXTの設定部分を書き加えてアップし直したら、今度はちゃんと729ファイルだけインデックスしてくれました。僕が何か設定をドジったのかなぁ。更新日時 Tue Feb 5 14:18:07 2002
検索対象フォルダ定義ファイル名 assdata/camera.dir
文書一覧ファイル名 assdata/camera.lst
文書一覧ファイルのサイズ 116,654 バイト
検索対象文書数 729
索引ファイル名 assdata/camera.idx
索引ファイルのサイズ 1,659,270 バイト
索引文字成分数 19,438
検索結果の表示は終わったらしいのに、なんだかまだ読み込んでいるなと思ったら、ページ下に別ページへのリンクが延々と表示されました。「性能表」をキーワードにページあたり10件で表示させたら、74ページ目までリンクが生成されたのでした(^^;
確かにβ2の時は「次の○○件の表示」「前の○○件の表示」だけしかリンクがなかっので、直接移動したいといいましたが…。
観察してみると、検索結果が表示された時点では、ステータスバーによると20k程度しか読み込んでいません。その後ページリンク部が延々読み込まれ、最終的に表示された画面のソースを手元にダウンしてみたら229kbもありました。210kbがリンクのために生成されていることになります。
検索結果20kを得るために230kを読まねばならないとは、ちょっと行き過ぎ。表示もあまりに長いので、例えば前後10リンクまでなど制限をかけたいところです。これ、どこかに設定があるのかなぁ。
ass.cfgにはこの表示をリンクにするかボタンにするか切り替えられる設定が追加されていましたが…。
default.qrで検索画面、default.rtで検索結果部分のデザインを変更できますが、問題はその下、ページリンク部分なのでcgiに手を入れるしかなさそうです。
追記:
ass.cfg、default.htmにも画面デザインに関わる部分がありますが、ass.cfg、default.qr、default.rt、default.htmと四つのファイルに渡ってデザイン設定があるというのはどんなモンなんでしょう。
ページあたり50件にすると、リンク数が減るため、生成されるソースは76kまで小さくなりました。うちの場合、ページあたり50件をデフォルトにするのが良さそうです。
検索には2秒程度の時間がかかっていますが、おそらくこのリンク生成の数の多さと無縁ではないはずです。
検索結果が表示される、ページ下に絞り込み検索用の窓が表示されます。絞り込み検索用の窓には、今検索したキーワードが表示されますが、トップに表示される検索窓にはキーワードが表示されません。
なれたユーザーならともかく、普通は同じ検索窓にキーワードが表示される仕様の方が直感的に操作できると思います。
β2でも指摘しましたが、表示件数、検索対象、ソート条件、内容表示、検索方法が、検索するとデフォルトに戻ってしまいます。続けて検索する場合は絞り込み検索窓でどうぞ、ということなんでしょうが、条件を変更して検索したい場合もありますから、この仕様は直して欲しいです。
「検索テスト」で定番テストを行っていますので参照してください。