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デスクトップサーチへリクエストを投げて
その結果を出力する。
でも動かないよぅ...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 様
まさかの日記 様
は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 様
まさかの日記 様