Googleデスクトップサーチでイントラネット内全文検索 | 闇プロジェクト::zoe

Googleデスクトップサーチでイントラネット内全文検索

どういう仕組みかは僕なんかにはわからないんですが、Googleデスクトップサーチ
はwebサーバを独自で立ち上げてwebブラウザでアクセスしてると思われます。

そこで、そのURLに、インストールしたマシン以外からもアクセス出来れば
お手軽に、google並の検索力で、社内ネットワーク等の全文検索が可能
なのではと思いちょっと試してみました。

もしこんなことが出来れば、
 ・社内webサーバの全文検索を超簡単に!?
 ・社内ファイルサーバも同じくぅ!?
なんてことを考え、今居るところの次の案件に上がりそうな「全文検索」
も楽勝!?とニヤニヤしつつ。。。

#著作権的な問題がある為、多分駄目だと思いますが。


方法としては、前回のエントリーで書いたリダイレクトと同じでOKかと
思ったのですが、如何せんGoogleデスクトップサーチのドメインは、

http://127.0.0.1:4664/search&s=XXXXX?q=

とlocalhostを指してますので、単純にリダイレクトという訳にはいかないかなぁと。


それで思いついたのが、

1.取りあえずapache等が動いているwebサーバでクライアントのリクエストを受け

2.webサーバのPHPにより自分にインストールされているGoogleデスクトップサーチに
  対してリクエストを送る。

3.その結果をwebサーバはそのままクライアントへスルーする。


というプロキシな方法。

 クライアント => サバapache => サバGoogleデスクトップサーチ



で、やってみました。

webサーバのPHPは「search.php」としてこんな感じで。
リクエストの[q]がセットされていない場合は検索画面を表示し、
セットされている場合はGoogleデスクトップサーチへリクエストを投げて
その結果を出力する。
 <?php
 $q = $_GET["q"];
 
 if (!isset($q)) {
  print <<<END
   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
   <title>Coogle</title>
   <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
   </head>
   <body>
   <center>
   <table width="100%"  border="0" cellspacing="0" cellpadding="0">
   <tr>
   <td>
   <form name="f" method="get" action="http://webサーバ/search.php">
    <input name="q" type="text" size="50"><br>
     <input type="submit"  value="検索">
   </form>
   </td>
   </tr>
   </table>
   </center>
   </body>
   </html>
  END;
 
 }else{
 
  require_once "HTTP/Request.php";
 
  $q = mb_convert_encoding(
   $q
   ,"UTF-8"
   ,"shift_jis"
  );
 
  $req =& new HTTP_Request("
   http://127.0.0.1:4664/search&s=XXX?q=" . urlencode($q)
  );
  $req->setMethod(HTTP_REQUEST_METHOD_GET);

  if (!PEAR::isError($req->sendRequest())) {
      echo $req->getResponseBody();
  }
 
 }
 ?>





でも動かないよぅ...orz
「申し訳ありませんが、ブラウザに対応していません。」
とのことです。
たぶんGoogleデスクトップサーチの中でUserAgantをチェックしてるの
だと思います。

PHPからプロキシとしてリクエストを投げた場合の
UserAgantはどうなってるんだろう?

あとそれで動いたとしてももう一個問題があるなぁ。
Googleデスクトップサーチの結果が全てlocalhostを含んだパスだから
それを全部置換してやらないと。

でも面白そうだし、もうちょっとさわってみます。


ここまで書いて投稿しようとしたら、なんか動きました!!
先ほどのエラーの画面から
「サポートされていないブラウザをお使いの方はここをクリック」
みたいなリンクをクリックしたら、検索結果見えました♪


でもここで新たな問題が。。
検索結果に対するリンクのパスが
http://127.0.0.1:4664/redir?url=C%3A%5C%5F....
となっていてGoogleデスクトップサーチの機能としてリダイレクトできるように
してるみたいなんですが、単純に

127.0.0.1 => WEBサーバのドメイン

と変えても駄目なよう。しかもポートが4664

うー。わからないです。。

apacheとGoogleとwebサーバレベルでどっちが優先されるんだろう。
外部からGoogle越しのファイルアクセスは不可能になってるんかなぁ。

謎は深まるばかりです。
そのうちえらい人が解明するのを待つことにします。

isi

#2005/03/16追記

かなり以前からすでにこの試みは行われてたようです(汗
しかもすごい人達によって!
お恥ずかしい。。

blog.bulknews.net

NDO:Weblog

まさかの日記