« 2006年11月 | トップ | 2007年01月 »

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で時間を決めて巡回させていたのですが、現在のテスト環境のマシンが超低スペックなので、処理に時間がかかると多重起動しまくりで、マシンがハングアップするので、ちゃんとプロセスを見て多重起動させないようにしました。

投稿者 田中@グリニッジ : 15:06 | コメント (0) | トラックバック