2006年12月10日
[Senna]はまりどころ

Plaggerによるクローラーが集めてくるデーターがそろってきたので、検索部分を作ってみた。
で、はまったところ。
単語ひとつでの検索は問題がないのだが、複数語でのAND検索がどうもおかしい。
うまく検索が出来ていないようなので、検索のクエリーをいろいろ変えてみたりしたけれど解決せず。
Sennaのインストール用ドキュメントを改めて読んでみると以下のような記述が。
UTF-8やShift-JISでのインデックス作成を行う場合には、 > sudo mkdir /var/senna > sudo vi /var/senna/senna.conf DEFAULT_ENCODING utf8等、 文字コードを記述する(EUCの場合は不要。値はeuc, sjis, utf8のいずれか)
修正を行うと、AND検索もうまくできるようになった模様。
この部分の設定を行わなくても、普通に動作テストとかが通ってしまっていたゆえに、原因を見つけ出すのが少々困難で、はまってしまった。
投稿者 田中@グリニッジ : 21:59 | コメント (0) | トラックバック
2006年12月02日
[Plagger]クローラー部一応完成

前回のエントリーの波ダッシュの部分は、ちょっと考えを改めて、データーとしては変に変換せずに持つことにする。画面に出力する際に必要なら変換するように。
で、なかなかこのところ年末進行で時間が取れないんですが、大体クローラー部は出来上がりました。
工夫したところとしては、Subscription::PingServerLiberalで、あちらこちらのchanges.xmlをとってくると、UFT-8ではない文字が入り込んでいる場合があり、その場合に、Aggregatorがエラーを吐いて止まってしまうので、Plagger側で前処理を行うことも考えたけれど、考えを改め、PHPにパラメーターでchanges.xmlのURLを渡し、PHPにその内容の取得を変換を行たあと、Subscription::PingServerLiberalに渡すことにしました。
plugins:
- module: Subscription::PingServerLiberal
config:
fetch_items: 1
servers:
- url: http://....jp/parse.php?url=http://....com/changes.xml
PHPでの変換は主に以下のような感じ。
mb_convert_encoding($xmlStr, "UTF-8", "UTF-8");
mb_convert_encodingは、判断できないエンコーディングの文字は勝手に省いてくれます。
また、pingサーバーのchanges.xmlがときたまタイムアウトしたりして、その場合もAggregatorに影響を及ぼすので、その場合のハンドリングなんかもPHP側に任せています。
あとは、クローラーをまわし続けるために、最初は、cronで時間を決めて巡回させていたのですが、現在のテスト環境のマシンが超低スペックなので、処理に時間がかかると多重起動しまくりで、マシンがハングアップするので、ちゃんとプロセスを見て多重起動させないようにしました。