4

開発モードでしばらくの間、sunspot の Solr gem を使用しています。アプリケーションを本番環境に移動する必要があります。

バンドルされている sunspot gem を使用して本番環境で solr をセットアップすることの短所はありますか?

私は一般的に tomcat + solr のアイデアが好きですが、セットアップがより複雑です。

黒点同梱の宝石は簡単です。3 つのステージ (ステージング、プロダクション、QA) に 1 つの Rails プロジェクト、2 つのアプリ サーバー、1 つの db/solr サーバーがあるとします。

  1. Rails プロジェクトを db サーバーにプッシュする
  2. bundle exec rake sunspot:solr:start for を使用して、実稼働環境の db サーバーで solr を起動します (solr インスタンスごとに異なるポートを使用するだけです)。
  3. rake sunspot:solr:reindex による再インデックス
  4. アプリサーバーのsunspot.ymlを変更して、特定のステージポートでdbサーバーに接続するようにします

上記は、プロダクション/ステージング solr の X インスタンスに適用されます。

Tomcat6 + Sunspot はそれほど簡単ではなく、時間と結果が効果的です。私が理解しているように(私を修正してください)、次のことを行う必要があります。

  1. db サーバーに tomcat をインストールして維持する
  2. 3 つの solr インスタンスが必要な場合 - 3 つの solr war を個別の solr でデプロイします (または、セットアップが非常に難しいマルチコア solr を使用します)。
  3. Rails プロジェクトを db サーバーにデプロイする
  4. Railsでスキーマ/構成/その他を変更するたびに、solr xmlとconfを生成し、それをtomcat webappsにコピーする必要があります
  5. solr conf/xml のディレクトリを変更して、インデックス ファイルなどを指すようにします。
  6. すべてのレールでTomcat solrアプリケーションインスタンスをリロードし、デプロイ手順へのスクリプトと「非レール」アプローチを含むものをデプロイします:)
4

1 に答える 1

3

私は最近似たようなことをし、同じ質問に答えなければなりませんでした。私の問題スペースは、2 つの言語 (できれば 2 つのコア、将来的には他の検索オプション用にさらに多くのコア) を持つように見え、いくつかのテーブルでデータをインデックス化し、ファセットを検索/カウントする必要があり、一部は製品グループのような階層構造や car_brand/ のような階層タグで行われます。モデル/タイプ/ビルド_年。

私が見た限りでは、sunspot は、相対的な「フラット」データがある場合にのみ (のみ) 最適に機能します。せいぜい、使用するフィールドを単一のモデルに対して定義するだけです。複数のモデルをファセット用の 1 つのドキュメントに結合する必要があるとすぐに、それは難しくなります。(しかし、私は Sunspot を使用していないので、はっきりとは言えません)。Solr との通信には、引き続き rsolr gem を使用できます (使用する必要があります)。しかし、開発で Sunspot を使用している場合は、いずれにせようまくいく可能性が高くなります。

Tomcat の詳細については、次を参照してください。

  1. db サーバーに tomcat をインストールして維持する

はい、いくつかの作業がありますが、処理できます

  1. 3 つの solr インスタンスが必要な場合 - 3 つの solr war を個別の solr でデプロイします (または、セットアップが非常に難しいマルチコア solr を使用します)。

マルチコアを使用しました。設定は特に難しくありません。いずれにせよ、Solr の構成について少し学んでおいたほうがよいでしょう。マルチコアの大部分は、本質的に同じ XML 構成ファイルのセットを含む 2 つのサブディレクトリを持つことです。

  1. Rails プロジェクトを db サーバーにデプロイする

とにかくこれをしなければなりません:)

  1. Railsでスキーマ/構成/その他を変更するたびに、solr xmlとconfを生成し、それをTomcat webappsにコピーする必要があります

はい、いくつかのスクリプトを作成します。あるいは、tomcat/solr フォルダーと Rails プロジェクト フォルダーを含む git リポジトリを作成するか、それらのフォルダーをシンボリック リンクすることもできます。私はまだ良い解決策を見つけていないので、時々ちょっとしたものをコピーする必要があります.

  1. solr conf/xml のディレクトリを変更して、インデックス ファイルなどを指すようにします。

うん、いくつかのシンボリックリンクは物事を簡単に保つのに役立ちます

  1. すべてのレールでTomcat solrアプリケーションインスタンスをリロードします。これには、デプロイメント手順へのスクリプトと「非レール」アプローチが含まれます:)

展開によって検索に関連するものが実際に変更された場合のみ。スクリプトをいくつか用意します。役立つ Rails 展開ソリューションがありますが、いくつかのことを手動で行うことを気にしないので、わざわざインストールしませんでした。

全体として、Solr の構成をより詳細に制御および洞察できるようになり、階層を持つファセットなどのより複雑な機能の一部をより適切に使用できるようになったと思います。実際、Solr は最初は少し複雑に見えるかもしれませんが、慣れると素晴らしいツールになります。

于 2012-12-12T14:03:40.333 に答える