2009-06-23 10 views
4

私はDreamhostでホストされている約500の写真と150人の訪問者を持つ小さなサイトを持っています。 は、共有ホストで許可されていない長い時間のプロセスを実行する必要のない単純な検索エンジンを追加したいと思います。Ruby On Railsで検索

検索エンジンは、様々なモデルに属する別のフィールドを処理する必要があります:写真、Photo.author.name、Photo.comments.contentおよび他の多く

を助けることができる任意のプラグインはありますか?

答えて

4

一般に共有ホスティング環境で利用できるMySQLの全文検索機能は、この種の機能を追加するのに最適です。唯一の欠点は、InnoDBのために一般的に非推奨になっているMyISAMテーブルでのみ動作することです。

Wikipediaのデータベースアーキテクチャの大きな例である仕事を見てきたアプローチは、検索目的でモデルレコードの派生コピーを作成することです。これらはメインレコードと同期しておく必要がありますが、それはafter_saveハンドラまたは簡単なSQL更新ステートメントで簡単に実行できます。

ActiveRecordはフルテキストインデックスを理解することができません。私はMySQLのハッキングのコレクションに束ね例を持っていないのに、むしろ醜い延長は、それが協力にするために必要とされる:

http://github.com/theworkinggroup/rails_mysql_hacks/tree/master

1

acts_as_ferretがあなたによく役立つでしょう。

しかしとどのようにフェレットはあなたのような設定で実行するかどうかはわかりません。

+0

フェレットがバックグラウンドプロセスとして実行されたという印象を受けました。 – tadman

+0

フェレットにバックグラウンドプロセスが必要かどうかは誰にも分かりますか? – collimarco

+0

DRbサーバーを運用環境で実行する必要があります。フェレットは芝生なので、何かそんなに多くの問題を抱えていない何かを探すべきです。 –

0

あなたは、高速フルテキストのスフィンクスを考える/スフィンクスに見たいと思うかもしれませんサーチ。

Thinking Sphinx

Unixのパッケージをインストールする場合、私は知らないし、その全体のプロセスは、あなたがDreamhostの上で探しているもののためにやり過ぎですが、それが中によくあなたのニーズに応えるだろう、非常に高速かつ堅牢なソリューションです未来。

+0

スフィンクスは本当にうまくいっていますが、デーモンが必要です:( – collimarco

1

フェレットまたはスフィンクスは、専用のバックグラウンドプロセスが必要です。あなたの唯一のオプションは、適切なインデックスを持つMySQLフルテキスト検索のようです。

3

Railsのための少なくとも3全文検索エンジンがあります。

1が最良の選択でしょうか?場合によります。 HereあなたはEngine Yardからのコメントを含めて、スフィンクスとフェレットの比較を読むことができます。

+0

彼らはすべてバックグラウンドプロセスが必要です... – collimarco

2

私はacts_as_indexedプラグインがあなたのニーズに最適な賭けだと思います。別のサーバーは必要ありません。ファイルシステムに自動的に索引を作成します。あなたのサイトに似たサイトでは、構成がすばやく簡単でした。

関連する問題