S.CREWに関する、良くある質問

  1. S.CREWって何ですか?
  2. 1.0から1.1への変更で、何が変わったのですか?
  3. S.CREWはどういうシステムで動きますか?
  4. インストールは大変じゃないですか?
  5. 検索スピードはどれくらいですか?
  6. indexingのスピードはどれくらいですか?
  7. どれくらいのディスク容量を必要としますか?
  8. S.CREWが呼びだしているフリーソフトはどこから入手できますか?
  9. jperlは持っていないけれど、動かせますか?
  10. perl5は持っていないけれど、動かせますか?
  11. WAISと比べると使いやすいですか?
  12. 1.1ではなぜShift-JISを内部コードとして使わないのですか?
  13. 1.1とデータやconfig.plファイルの互換性はありますか?
  14. S.CREWはちゃんとサポートしてもらえますか?
  15. ロボットと一緒に動かして、サーチエンジンサイトを構築できますか?
  16. 動かないんですけれど?
  17. インストールしたのに、日本語キーワードで検索できないのはなぜ?
  18. フリーソフトはバージョンが違っても大丈夫?
  19. sortやgrepは日本語パッチがなくても大丈夫?
  20. 人名その他の単語が変に分割されるんだけれど、直せないの?
  21. NetNewsの記事などにも応用できますか?
  22. text/htmlファイルしかだめなのか?PostscriptやPDFには対応しないの?
  23. 検索結果として見えるURLのパスを変更したいのだが?
  24. 転置ファイル(*.invファイル)の内容が文字化けしてるのは、なぜ?
  25. ちょっと前まで、入力したキーワードが化けることがあったけれど?
  26. フィールド指定検索はできないの?
  27. tar.gzファイルの解凍の仕方を教えて!
  28. なぜconfig.plがUPDATEディレクトリにもあるの?
  29. 会社内や営利目的のWWWサイトで使ってもよいですか?
  30. kakasi以外の単語分割ソフトはないのですか?
  31. 同義語辞書は使わないのですか?

  1. S.CREWって何ですか?

     1997年2月28日現在、Sony Driveで使用されている検索エンジンの名前です。 S.CREWという名前は、
    	SonyDrive Search Engine
    	Sony Search Engine
    	Simple Search Engine
    
    などに由来しています。README-jの最後の部分も参考にしてください。
     S.CREWは、perlで記述されたとても単純な検索ツールです。デーモンプロセスは 使用せず、単なるWWWサーバのCGIプログラムとして動作します。また、いくつか のフリーソフトウェアを使用します。
     S.CREWを使用するには、あらかじめ検索の準備が必要です。
    1)検索対象となるファイルから単語を抽出し、
    2)その単語とファイルの識別子をペアにして
    3)単語をキーとして文字コード順にならべて記録
    することによって転置ファイル(inverted file、index fileとも呼ばれる)を 作成します。 DBMなどのハッシュ関数は用いず、テキストファイルだけでデータ ベースが実現されています。従って、データベースが壊れているかどうかは、特 殊なツールを使わずにチェックすることができます。
     検索時には、
    4)キーワードを受け取った後、
    5)そのキーワードで始まる単語を2分探索法によって探し、
    6)その単語を含むファイルの番号から、URLを再構成してユーザに返す。
    という手順を実行します。
     検索スピードのためには、単語と元のファイルとをDBMなどのハッシュ関数で 取り出すほうが良いのですが、DBMは書き込みが遅いのと、テキストファイルの 操作ツールが広く使えるために、DBMを使わない方法で実現しました。S.CREWは、日々 データを更新/追加していくようなデータベースを目指しているので、このよう な実現方法を選択しました。それでも、数百MB程度のテキストファイル(htmlも 含む。以後text/htmlファイルと表記)であれば、十分に実用的な検索スピード が得られます。
     本当に検索スピードが必要になったら、これらの機能をCや、perlでもDBMを使 用する方法で書き直してみればよいでしょう。

  2. 1.0から1.1への変更で、何が変わったのですか?

     1.0から1.1への変更点は、以下のとおりです。  perl5対応に伴い、S.CREWが内部的に扱う文字コードはEUCのみとしました。これ まで、転置ファイルなどをShift-JISで作成していた場合は、indexingをやり直 さないと使えません(文字コードを変換しただけでは正しく動作しない場合があ るでしょう)。
     また、config.plなどで使用する変数も増えました。1.1のconfig.plを1.0で使 用するのは可能ですが、1.0のconfig.plを1.1で使用しても、正しく動作しませ ん。
     その他、S.CREWから呼びだされるいくつかのフリーソフトウェアは、同じものを 変更せずに使用することが可能です。

  3. S.CREWはどういうシステムで動きますか?

     S.CREWは、現在のところ、UNIX + httpd + perlという環境でのみ、動作します。 MacintoshやWindows/NTなどで動作させたという報告は、この文書執筆時点では 一切ありません。
     UNIXは、NEWS-OS 4.2.1Rで動作確認を行なっています。S.CREW-1.0はさらに、 Linux、Solarisなどで動作したという報告を受けていました。
     httpdは、Apache-1.1.1を使用して動作チェックを行なっています。
     perlは、以下のバージョンで動作チェックを行なっています。
    -----------------------------------------------------------------------------
    This is perl, version 5.003_20
    
    Copyright 1987-1996, Larry Wall
    
            + suidperl security patch
    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5.0 source kit.
    -----------------------------------------------------------------------------
    


  4. インストールは大変じゃないですか?

     S.CREWのインストール自体は難しくはないはずです。S.CREWはperlのスクリプトとし て提供されており、コンパイルの必要がなく、どこに転置ファイルを置けば良い かなどを、テキストエディタでconfig.plファイルに書き込めばおしまいです。
     しかし、S.CREWが使用しているいくつかのフリーソフトウェアをインストールす るのには手間がかかるかも知れません。それらのソフトウェアのインストールは、 それぞれに付属のドキュメントを参照してインストールしてください。

  5. 検索スピードはどれくらいですか?

     大抵は3秒以内で検索が終了するでしょう。参考までに、検索が終了した時点 で消費したCPU時間(1/60秒単位)と、経過した時間(1秒単位)を表示していま す。これは、キーワードを受け取り始めた時から、検索結果のリスト表示を終え るまでの時間であって、単なる検索時間だけではありません(ネットワークでの 転送時間は含みません)。
     しかし、頻繁ではないですが、検索結果として出力するファイルの数が多いと、 7〜8秒程度かかることもあります。
     検索アルゴリズムは通常、以下のように、早さの順番は決まっているものです。
    	線形探索 < 2分探索 < ハッシュ探索
    
     ハッシュ探索を使用する例は世の中にたくさんあり、UNIX上ではDBMという一 般的なツールが用意されています。しかし、S.CREWでは、取り扱いのしやすさ、頻 繁な indexingにも耐えられる更新スピードを考慮して、2分探索を採用していま す。
     「大抵は3秒以内で検索が終了する」というのも、巨大なデータベースになっ たときのスピードではありません。数百MBを超えるようなtext/htmlファイルに 対してはテストしていません。もし検索(だけ)のパフォーマンスを追及するな らば、ハッシュ探索を採用することも考えられてよいでしょう。
     それでも遅いと感じる場合には、Cなどのコンパイラ型言語でバイナリプログラム を作成すればよいでしょう。それでも遅ければ、いちいちプログラムを起動する 必要のないデーモンプロセスを動作させるようにすればよいでしょう(Cで書か れ、デーモンプロセスを動作させるfreeWAISというフリーの検索ソフトウェアも あります)。
     それらの高速化手法をとらず、扱いやすいプログラムを目指したのが現在の S.CREWです。

  6. indexingのスピードはどれくらいですか?

     64MBメモリのNWS-5000WN(R4400SC 67MHz)で、40MB(1600以上のファイル) を20分ほどで処理しています。WAISのindexingよりは長めですが、DBMを使うよ りは早いです。

  7. どれくらいのディスク容量を必要としますか?

     データにもよりますが、text/htmlファイルの総量とほぼ同じ程度のディスク 領域を消費することを覚悟しておいてください。転置ファイルを更新するときに は、使用中の転置ファイルと、新たに作っていくファイルとで、text/htmlファ イルの容量の倍程度必要となる場合があります。
     ただし、上記の数字は飽くまで目安であって、こちらの環境では、40MBのデー タに対して、転置ファイルは(HTML.invとHTML.flist合わせても)3MB以下で作 成されています。
     フリーソフトウェアで辞書などを用いる場合には、その容量も考慮しなければ ならないでしょう。

  8. S.CREWが呼びだしているフリーソフトはどこから入手できますか?

     S.CREWが呼びだしているフリーソフトウェアは、通常のUNIXで標準に添付されて いるコマンドを除けば、以下のようなところから入手できます。Linuxでは伝統 的に、sortやgrepなどのコマンドはGNUのものを使用しているので楽でしょう。
     なお、これらのソフトウェアは、それぞれ別の方によって作成されたものです。 S.CREWとは著作権などの使用条件が異なる場合がありますので、注意してください。 また、このリストはあくまで参考例として挙げるもので、私達が確実にこれらの サイトからダウンロードしたソフトウェアで、動作を確認したことを意味するも のではありません。
    perl5
    ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/src/5.0/perl5.003.tar.gz
    GNU sort
    ftp://tron.um.u-tokyo.ac.jp/pub/GNU/prep/textutils-1.22.tar.gz
    GNU grep
    ftp://tron.um.u-tokyo.ac.jp/pub/GNU/prep/grep-2.0.tar.gz
    lynx
    ftp://ftp.lab.kdd.co.jp/infosystems/lynx/jp/lynx-2.3jp092.tar.gz
    ftp://ftp.lab.kdd.co.jp/infosystems/lynx/old/lynx2-3.tar.Z
    kakasi
    ftp://ftp.kusastro.kyoto-u.ac.jp/pub/baba/wais/kakasi-2.2.5.tar.gz
    ftp://ftp.kusastro.kyoto-u.ac.jp/pub/baba/wais/kakasi-ext.tar.gz
    nkf
    ftp://ftp.iis.u-tokyo.ac.jp/pub9/unix/Kanji/nkf-1.5.shar.gz


  9. jperlは持っていないけれど、動かせますか?

     S.CREW-1.0はjperl-4.035を前提に書かれたプログラムだったので、jperlを持っ ていない場合は、ちょっと変更しなければ動作しませんでした。が、S.CREW-1.2に なって、perl5対応になったので、jperlがなくても動作するようになりました。

  10. perl5は持っていないけれど、動かせますか?

     残念ながら、S.CREW-1.2は、perlのversion 5でないと正しく動作しません。機能 は落ちますが、これまでのS.CREW-1.0を使って我慢するか、perl5をインストールし てS.CREW-1.2 を使用してください。

  11. WAISと比べると使いやすいですか?

     まず、私達は製品となっているWAISは一切触ったことがないので、比較するこ とができません。
     freeWAIS-sfと呼ばれるWAISの派生プログラムも、最近のものは知りません。 freeWAIS-sf-1.0では、make自体が難しく、中のプログラムも複雑で、カスタマ イズ等が難しかったという印象があります。最近は改善されているかも知れませ ん。

  12. 1.1ではなぜShift-JISを内部コードとして使わないのですか?

     S.CREW-1.2では、内部のコードはEUCに統一しています。Shift-JISだと、1バイト ずつ文字列を処理するときに、あるバイトデータが2バイト文字の一部なのかそ うでないのかが簡単には判別できず、プログラミングが非常に大変になるからで す。また、最近のperlはほとんどがバージョン5以降であり、jperlのように特別 な日本語パッチがあてられていることも、多くはありません。従って、perl5で も1バイトコードと2バイトコードが容易に判別できるEUCを内部コードとして採 用しました。
     ユーザからのキーワード入力も、すべてEUCに変換して処理しています。

  13. 1.0と1.1では、データやconfig.plファイルの互換性はありますか?

     ほとんど互換性はありません。ただし、S.CREW-1.0で作成されたHTML.invファイ ルや HTML.flistは、 EUCに文字コードがそろえられていれば、それなりに使用 できます。1.1 で追加されたlongフォーマットの検索結果出力は正しくはなされ ません。
     config.plも、S.CREW-1.2のものを使わないと、S.CREW-1.2に含まれるプログラムは 正しく動作しません。
     いずれにせよ、S.CREW-1.2では、転置ファイルもconfig.plファイルも、1.1のも のを使用してください。

  14. S.CREWはちゃんとサポートしてもらえますか?

     サポートは一切提供されません。この文書の末尾付近に示されている S.CREW管理 者用のメールアドレスにメールを送られても、返答は保証されません。
     ただし、GNU General Public Licenseに記述されている範囲内で、独自にサポー トする人が現われるのを、私達は妨げるわけではありません。
     また、サポートが必要ならば、元々サポート体制が確立している市販のソフト ウェア(弊社MediaFinderや他社製品など)を使用するほうが良いでしょう。

  15. ロボットと一緒に動かして、サーチエンジンサイトを構築できますか?

     できます。ただし、S.CREWは完全にはロボットと一体化されてはいないので、多 少はカスタマイズすることが必要かも知れません。
     また、使用するロボットプログラムが効率的かどうか、あるいは「正しい」ロ ボットの動作を行なうプログラムかどうかは、私達は一切感知しません。ロボッ トは、間違った運用をすると、大きな迷惑をインターネットに対して与えること がありますので、注意してください。

  16. 動かないんですけれど?

     このようなメールを頂いても、こちらは答えようがありません。このようなメー ルが来ても、私達は無視します。
     何が動かないのか、どこでどういう環境(端末の種類、端末のOS、検索ページ のURL、キーワードの種類、実行したプログラムの種類、実際に動かないプログ ラムの名称、実行した時刻、等々)で、何を実行したのか(インデクシングプロ グラムか、検索プログラムか)などを明確にして質問してください。
     もちろん、細かく症状を述べられても、私達からの返答が保証されるわけでは ありません。

  17. インストールしたのに、日本語キーワードで検索できないのはなぜ?

     英数字での検索はうまくいっているのですね?とすれば、考えられる症状と、 その対策には、以下のようなものがあげられます。
    1. config.pl内で、sortコマンドのオプションを勝手にいじってしまい、 HTML.invファイル内の単語が正しく文字コード順にはソートされていな い(HTML.invファイルはテキストファイルであり、チェックは容易にで きる)。漢字が含まれているとすれば最後のほうにまとまっているはず だが、実際にはそうなっていない。
      →config.pl内で、sortコマンドのオプションを元に戻す。
    2. config.pl内で、lynxやkakasiのコマンドのオプションで、文字コー ドを正しくEUCにそろえていない、または、kakasiのオプションが環境 によって違う動作をすることがある。
      →config.pl内のそれらのコマンドのオプションを元に戻して、転置ファ イルを作成し直す。特にkakasiの-ieucオプションはつけないほうがよ い場合があり、試してみないとどれがよいかは判断できない。また、 "-J -w"という順番よりは、"-w -J"という順番でオプションを指定した ほうがよい場合がある。
    3. S.CREW-1.0の頃のHTML.invファイルがShift-JISのコードを使用していた のに、S.CREW-1.2のEUCでの単語インデックスを追加した。
      →S.CREW-1.2用に転置ファイルを最初から作り直す。
    4. S.CREW-1.2をjperlで動かそうとした。
      →S.CREW-1.2はperl5で動かす。
    5. S.CREW-1.2のUPDATE/config.plを正しく編集し、UPDATE/mkindex.plコマ ンドで転置ファイルを作成したのにもかかわらず、S.CREW-1.0のsjis環境 のままsearch.plコマンドで検索しようとした。
      →search.plコマンドはUPDATEディレクトリのconfig.plを参照しません。 config.plとUPDATE/config.plは別々に編集しましょう。
     ほかにもいくつか理由が考えられますが、英数字は検索できているのですから、 もうちょっとで日本語も検索できるようになるはずです。頑張ってください。

  18. フリーソフトはバージョンが違っても大丈夫?

     こちらで実際に使用している各フリーソフトウェアのバージョンは、README-j に書いたとおりですが、kakasiを除けば、多少はバージョンが違っても、S.CREWは 支障なく動くでしょう。使用するソフトのバージョンによって、オプションの指 定の仕方などが、違っている可能性があります。
     kakasiは、-wオプションを理解するパッチが2.2.5用にしか存在していないの で、それ以外のバージョンでは、動作させることが難しいかも知れません。また、 nkfをもし使うならば、1.5以上でないと、-Zや-mオプションは使えないかも知れ ません。

  19. sortやgrepは日本語パッチがなくても大丈夫?

     現在のところ、この2つのコマンドには日本語パッチをあてなくても、S.CREWは動 作しています。現に、私達はGNU sortには日本語パッチがあたったという話を知 りません。grepはURLをファイルリストから抽出するときにしか使ってないので、 URLに日本語が使われないかぎりはGNU grepにも日本語パッチは不要でしょう。
     こちらではGNU grepには日本語パッチをあてていますが、何かと便利だから、 ということ以上の理由はありません。

  20. 人名その他の単語が変に分割されるんだけれど、直せないの?

     単語の分割は、kakasiというプログラムが受け持っています。このkakasiの辞 書を適切に整備することによって、ある程度直せるでしょう。
     kakasiの辞書は、jserverの辞書から、jserver付属のdtoaコマンドを用いて変 換することなどによってカスタマイズが可能です。詳しくは、kakasiのパッケー ジに含まれるJISYO ファイルを参照してください。
     ただし、そうやって辞書を整備していっても、kakasiは片仮名だけ、あるいは 平仮名だけの文字列はまとめて一つの単語として見る傾向があります。これは 「変に分割される」というよりも「正しく分割されない」と言うべきなのですが、 いずれにせよ、今後の課題でしょう。
     kakasiをやめて、 ChaSen など、ほかのプログラムを使用することでも、単語の分割をより自然に行なうこ とが可能かも知れません。

  21. NetNewsの記事などにも応用できますか?

     できます。特に、NetNewsなどの記事は、前回の更新から新しく届いた記事だ けを追加して検索できるようにする、という様な操作に向いており、S.CREWに向い ているデータと言えるでしょう。ただし、そのように「新着の記事だけ」追加す るプログラムは、UPDATE/update.plを変更するなどして、ユーザが作成しなけれ ばなりません。また、数百MBを超える大容量のデータベースが作成されたときに も、それ以下の容量の時と同様の検索スピードが出るとは限りませんので、注意 してください。

  22. text/htmlファイルしかだめなのか?PostscriptやPDFには対応しないの?

     S.CREWは、現在のところ、text/htmlしか扱いません。PostScriptやPDFから正し く(日本語も含めて)テキストデータを抜き出すことができれば、config.pl内 の$FILTERの値を変更することで比較的容易に対応できるはずです。しかし、現 在は、(特にPDFについて)そんなに便利で確実なツールがないので、対応がで きていません。

  23. 検索結果として見えるURLのパスを変更したいのだが?

     そういう場合にも、S.CREWのテキストデータによるインデクシングが効力を発揮 します。HTML.invファイルとHTML.flistファイルは、ファイル番号の対応が取れ ていればよいので、HTML.flistの中身を直接変更すればよいのです。
     また、もうちょっとエレガントな方法としては、config.pl内で%LOCAL_URL変 数を設定する方法もあります。ftpdとhttpdで同じディレクトリを共有していた 場合、ftpのパス名はすべてhttpでアクセスさせれば良いのです。%LOCAL_URLの 使いかたは、README-jをご覧下さい。

  24. 転置ファイル(*.invファイル)の内容が文字化けしているのは、なぜ?

     kakasiで-ieucオプションを付けていませんか?kakasi-2.2.5 + パッチで、 -ieuc オプションを付けていると、文字化けする症状がこちらでは発生しました。 -ieucオプションを削除して再度転置ファイルを作成し直してください。
     また、正常に作成されているのに、端末側がShift-JISの環境であった場合、 文字化けしているように見えることがあります。その場合には、正しい環境を設 定してください。

  25. ちょっと前まで、入力したキーワードが化けることがあったけれど?

     S.CREW-1.0では、入力したキーワードによっては、文字化けが発生することがあ りました。場合によっては、セキュリティホールになると指摘した人もいらっしゃ いました。
     S.CREW-1.2では、このようなことがないように修正されています。これまで S.CREW-1.0を使用していた皆さんにも、この点を考慮していただき、速やかに S.CREW-1.2に移行されることを強くお勧めします。

  26. フィールド指定検索はできないの?

     現在のところ、S.CREWはリレーショナルデータベースではなく、フィールド指定 検索はサポートしていません。フィールド指定に近い機能としては、URLのパター ンを指定して、特定のファイルだけを検索できる、カテゴリー検索とも言うべき 機能が実現されている程度です。

  27. tar.gzファイルの解凍の仕方を教えて!

     このファイルを読めているということは、tar.gzファイルを展開(解凍)でき たということかも知れませんが、tar.gzというのは、tar というコマンドとgzip というコマンドを使用して作成されたことを意味しています。tarもgzipもUNIX のユーザには一般的なコマンドですが、S.CREW-1.2.tar.gzファイルは、以下のよう にして展開します。
    	gzip -dc S.CREW-1.2.tar.gz | tar xvf -
    
    これだけで、このコマンドを実行したディレクトリで、S.CREW-1.2のパッケージが 展開されます。

  28. なぜconfig.plがUPDATEディレクトリにもあるの?

     UPDATEディレクトリがUPDATEという名前ではなく、このディレクトリごと、全 く別の名前のディレクトリに移動してもいいように、別のconfig.plファイルを 用意しておきました。もちろん、その場合には、mkindex.plなどのrequire文を 変更しなければなりません。
     mkindex.plは、しばしばテストをしたくなるプログラムです。このテストを、 正常に動作しているS.CREW-1.2とは独立して行ないたい場合がしばしばあると思わ れたので、UPDATEという別のディレクトリにもconfig.plを置いてあります。
     UPDATEディレクトリには、update.plというプログラムも置かれています。こ れを実行すると、すぐ上のディレクトリのデータベースを更新してしまいます。 単なるテストの時は、mkindex.plだけを実行するようにしましょう。

  29. 会社内や営利目的のWWWサイトで使ってもよいですか?

     GPL Version 1に従うかぎり、どこで使用しても構い ません。第三者から聞かれた場合には、このプログラムがソースコードごと無償 で提供されていること、著作権等の権利をソニー(株)が保持していること、入 手できる場所はどこかなどを伝えることができなければなりません。いちいち回 答するのが面倒な場合には、このプログラムの実行結果などの画面から、このプ ログラムのダウンロードできる場所を明示しておけばいいでしょう(検索結果表 示画面にHTMLのアンカーがなければならない、というわけでもありません。 GPL Version 1を良く読んで臨機応変に願います)。

  30. kakasi以外の単語分割ソフトはないのですか?

     20. でも触れましたが、 ChaSen という、以前のjumanというプログラムの発展 したプログラムがあるようです。jumanよりもスピードなどが向上していると言 われています。是非トライしてみてください。S.CREWでの利用に適しているかは、 こちらでは評価しておりません。

  31. 同義語辞書は使わないのですか?

     現在のところ使っていません。indexingの時点で類義語、同義語を合わせて記 録できればよいのでしょうが、そうなるとデータが増えてしまいます。また、文 脈によっては同義語かどうかが変わってしまう場合があります。
     また、検索時に同義語を展開してそれぞれの同義語をキーワードにして検索す る場合も、その同義語の個数分だけ検索時間がかかってしまいます。
     将来的には必要かも知れませんが、現在のところは、特に考えておりません。


 以上。

sse-admin@src.sony.co.jp


(c) Copyright 1996-1997 Sony Corporation. All rights reserved.