1

ここで、現在扱っているプロジェクトのアーキテクチャに関する決定を下す必要があります。要件は次のとおりです。

  1. ドキュメントの取り込み (.doc、.pdf、.csv、おそらくビデオ)

  2. 実際のドキュメント ストレージ (サーバー上のディスク上に、DB からのファイルへの参照があると仮定します) - データベースで検索可能でファセット可能な特定のフィールド??

  3. 全文文書検索

  4. ファセット (ドキュメントごとに異なる可能性のあるドキュメントの取り込みから収集されたフィールドの選択に基づく - 言い換えれば、200 のファセットを持つことができますが、各ドキュメントには一部のみが適用されます)

Railsをサーバーとして使用しており、現在mySQLを使用しています。ここには、少なくとも 2 つの明白な選択肢があると思います。

  1. ソル; ドキュメントのフィールドを mySQL に保存し、Sunspot gem を使用して Solr インデックスとファセットを定義します。ここでの利点は、高速検索、ファセット、ドキュメント取り込みユーティリティのようです。200 (おそらくそれ以上 - 本当に動的に定義されている) ファセットに関する問題についてはよくわかりません。また、書類の形や大きさがバラバラであることを考えると、書類を保管する仕組みがあればもっと良いのではないかと思います。
  2. MongoDB; mongoid gem を使用して MongoDB にドキュメント コンテンツを保存します。私はここでのドキュメント取り込みユーティリティに精通していません.ドキュメントストレージの明らかな利点はありますが、mongodbは全文検索でうまく機能すると思います.

(MongoDBでSolrを使用できる可能性があることも知っていますが、それについてはわかりません)。

正直なところ、私は Solr と MongoDB の両方にかなり慣れていないので、いくつかの長所と短所が欠けていると確信しているので、ここでいくつかのアドバイスを使用できます。

4

2 に答える 2

3

Elasticsearchを使用できるように聞こえます。

これは検索エンジンであり、solr と同じ基礎となる lucene ライブラリを使用しますが、そこに保存するものはすべて JSON ドキュメントです。

全文検索、ファセット検索、さまざまな属性でのフィルタリングはすべてうまく機能します。いくつかの集計 (ヒストグラム ファセットなど) が組み込まれていますが、これらがニーズに一致することを確認する必要があります。

回復力とスループットのニーズに応じて、複数のマシンにまたがる Elasticsearch クラスターを構築することも非常に簡単です。

これには、elasticsearch で働く Karel Minařík によって維持されているタイヤを含む、いくつかのルビー バインディングがあります。

于 2013-03-13T13:33:29.567 に答える