yooseeさんからいただいたコメントのお返事にも書いたとおり、いままで、P2Pの検索システムってかいてきたけど、それが、どーいう仕組みなのか、っていうことを書かないと、どこが、どうすごいんか?っていうことが分かりませんよね。
(技術的にはまったくすごくありません。コロンブスの卵です。でも、結果はすごいんです)。
ということで、今回は、そのしくみについて、書きたいと思います。
■しくみ
表示部と検索部にわかれます。
■表示部
検索用語を入れられたら、あらかじめ、登録してある、プロパティファイルをもとに、検索用のHTTPリクエストをだし、検索結果をRSS形式のXMLで受け取ります。
そのとき、linkにURL、titleを表題、descriptionの部分を、タイトルの下にある言葉として表示します。
複数の検索用HTTPリクエストを出すので、同じ検索結果先が出てくる場合もありえます。その場合は1つだけ残して、あとは出力しません(同じ結果が複数出てきたほうが、優先順位が高いとかしても、いいかもしれない)。
具体例を示します。
プロパティファイルに検索先として
ローカルファイル検索:http://127.0.0.1/cgi-bin/kensaku.cgi?p=%%SJIS%%
会社ファイル検索:http://192.168.0.1/cgi-bin/kensaku.cgi?p=%%SJIS%%
YOU TUBE検索:http://www.youtube.com/rss/tag/%%UTF-8%%.rss
YAHOO 商品検索:http://psearch.yahoo.co.jp/search?p=%%UTF-8%%&first=1&ei=UTF-8
と登録してあったとします(ほんとうは、YAHOO検索とか、Goo検索とか、入れたかったのですが、検索結果をRSSで返してくれないので、YAHOO商品検索とします)
ケータイの場合は、ローカルファイル検索のURLのかわりに、
fs:mod/モジュール名
とかなんとか、書き方を変えます。
で、検索用語に
「はいだしょうこ」
と入れられると、その表示部のプログラムは、%%SJIS%%のところはSJISの16進にかえて、
%%UTF-8%%のところは、UTF-8の16進にキーワードを変換して、検索実行のため、Webを呼び出します。
すると、結果が上記のものの場合、すべてRSSで返ってくるので、その内容のうち、重複を単一化して、表示します。
なお、ローカルファイル検索と、会社ファイル検索で呼び出されるkensaku.cgi?p=キーワードにかんしては、次の表示部で書きます
■検索部
ここは、Get型で、検索対象用語が渡されるので(渡し方に関しては表示部のプロパティに記述する)、テキトーに検索を行って、その結果をRSSで返してくれればいいです。
テキトーな検索って言うのは、たとえば、なまずをつかって、テキストファイルを全文検索するでもOK。結果をRSSで返してくれればいい。
なんか、もっと複雑で、かつ検索対象が広い検索ソフトをつくってもOK,結果をRSSで返してくれれば、表示部でみられる。
ってことは、Googleの社員もしらないような、フォーマットを今考えつき、検索用CGIも作った場合でもOK。その検索用CGIをローカルのサーバーにいれ、ローカルでHTTPサーバープログラムを立ち上げ、
http://127.0.0.1/cgi-bin/その検索用プログラム.cgi?word=%%SJIS%%
みたいなかんじで、プロパティファイルに書き出しておけば、(そのプログラムはwordに与えられた語を検索するものとする)あとは検索命令を上記フォーマットで書ければRSSで返してくれる。以降の処理は同じってこと。
さらにいうと、社内独特の暗号をかけたもので、社員にはみせるけど、社外の人間には見せないというのでもOK!(ちょっと改造が居るけど)
プロパティファイルに
http://192.168.0.1/cgi-bin/kensaku.cgi?p=%%SJIS%%&pass=%%onepath%%
みたいなかたちで、かいておいて、
起動時にサーバーからパスワードを受け取り、
そのパスワードを、検索時、%%onepath%%にセットするっていうことにすれば、
パスワードが適切なときだけ、暗号を解除して、検索した結果をRSS形式で返してあげればいい。
もちろん、さらに表示部を拡張し、RSSの内容に暗号をかけ、表示側で、解除してもよい。
■そうすると、社外の検索システムに必要なことは
検索側のシステムは、社内外とわず、検索用語が指定されたら、結果をRSS形式で返せばいいことになる。逆にいうと、この形式でないと、つかえない。
ただ、YOU TOBEやYAHOO商品検索のように,商品以外の検索でも、RSS形式で返してくる可能性は、あると思う(ないと、作らないといけないけどね)
で、この形式でやれば、出版物の検索は、Googleにデータをスキャンさせなくても、検索可能になるんだけど、それについては、長くなるので、別の機会にしますね。