今、仕事で Google Search Appliance (GSA)を相手にしている。
(http://www.google.com/enterprise/features.html)
元々は他の(凄腕の)エンジニアが相手する予定だったが
他の仕事で手が回らなくなった。
(僕が他の仕事で手間取って、
その仕事の支援で入れなくなったのが
原因だが。。。)

 GSA へデータを読み込ませるには
URL を登録し、そのサイトを Crawl させると
URL と共にデータを登録する方法がある。
後者の場合、検索結果から内容への
リンクを張るのでなければ
URL は dummy でいい。
 そしてさらに GSA にはデータを登録する機構の
フロントエンドとなる built-in の Database Connector がある。
データベースへの接続と抽出する SQL を登録すれば
データベースから直接データを取得して
GSA に登録できるのである。

 で、データベースから登録する使ってみたが
どうもうまく動かない。
データに含んでいる文字列で検索してもきちんと抽出されない。
まったく抽出されないというわけではないところがさらに厄介。
う〜ん、WEB の Google 本体の動きを見る限り
こんなに頭が悪いわけないんだけどなぁ・・・。
でも動作から見て英語の文書として
取り扱おうとしているように見える。
で、データを XML で出力すると
LANG が en となっており、
enc も英語圏の言語になっていた。

 小さな再現用のデータを作成し、
GSA の購入元に問い合わせたところ
google から BUG で現時点では回避策は無いと
回答があったと連絡があった。
MS SQL Server を使ったとき限定かどうかわからないが、
なんだかなぁ・・・。

 でも、きちんと検索できるようにする必要はある。
感じとしてどうも腐っているのは
Database にアクセスするところだけのようである。
・・・と、いうわけで
feeds protocol ( http://code.google.com/gsa_apis/feedsguide.html)
を使って
直接テストデータを突っ込んでみた。
そしたら無事検索できた。

 そういうわけで feeds protocol を用いて
データベースのデータを GSA に登録することにした。
HTTP に慣れていないので苦労したが
なんとか登録できるようになった。
(Visual Studio 2003 で開発)

 いままで SQL の like文で処理を行っていた部分を
GSA に問い合わせた結果と照合するようにした結果、
2倍ほどの速度になっていた。
照合のためのデータ転送がボトルネックになっている。
まぁまだ改善の余地があるがミッションクリア。

 今日になって、
google から回避策の連絡があったと
GSA の購入元から連絡が来た。
バグの原因と回避策。
遅いって・・・。

コメント