0

私はまだ解決できていない複雑な問題に直面しています。

Postgresql 9、ElasticSearch 0.20.6、gem Tire (0.5.7) で Rails 4(edge) を使用しています。一緒にリンクされている複数のテーブルがあります。例えば:

エージェンシーには多くのクライアントがいます クライアントには多くのプロジェクトがあります プロジェクトには多くのファイルがあります

ここでの私の目標は、次の 2 つの方法でファイルのインデックスを作成できるようにすることです。

  • 最初に、すべてのファイルを簡単かつ迅速に検索できるインデックスを作成します。タイヤだけで成功したこと。私のインデックスには「ファイル」タイプがあり、それは魅力のように機能します。
  • 私が作成したいもう 1 つのインデックスには、ファイル情報の一部だけでなく、クライアントと代理店のプロパティの一部も含まれます。これは、プロジェクトのカテゴリやクライアントの場所などの基準に従って最適なファイルを取得できる外部ツール用です...

私はpostgresqlを使用しているので、そこからデータベースビューとインデックスデータを作成できると考えていました。ビューが複数の結合でかなり複雑になるため、そのようにするのが良いかどうかはわかりません。さらに、更新するとデータベース全体の再インデックス作成がトリガーされるのではないかと心配しています。

純粋なタイヤ モデルを実行し、リンクされたテーブルのいずれかでインデックスの更新を簡単にトリガーする方法があるかどうか疑問に思っていました。たとえば、 という名前の型でデータにインデックスを付けますfiles_front。ファイルまたは親を更新するたびに、影響を受けるすべてのファイルの値が ES で更新されるモデルFilesFrontがあります。has_one :file

どうすればいいのか本当にわからないので、アドバイスをいただければ幸いです。

4

1 に答える 1

1

別の、テーブルのない、またはスタンドアロンのモデルを持つことは、優れたソリューションです。ここでの問題は、FileFrontクラスをシステムの残りの部分に接続することだと思います。File事実上、または関連するetc. オブジェクトを更新するたびに、オブジェクトClientを更新する必要がありFileFrontます。

Model::Persistenceを実際に使用できます。したがって、それぞれFileに関連付けられた がFrontFileあり、これを JSON としてアセンブルFileし、コールバックで作成/更新しafter_saveます。注意が必要なのは、親オブジェクトへの変更がファイルに確実に反映されるようにすることです。

于 2013-04-24T15:07:15.617 に答える