2017-09-20 21 views
1

私の現在のプロジェクトは、オフィスファイル(.doc、.ppt)、.pdf、および画像を含むファイルストレージシステムを作成することです。私は、ファイル、異なるユーザーグループ、あるユーザーから\へのファイルの格納と検索を通して、テキストのフルテキスト検索を行う必要があります。Mongodbのバイナリでの全文検索

MongoDBはこれを行う良い方法ですか?

バイナリで全文検索をしていますか(またはオフィス文書はMongoで別の方法で保存されていますか?)

フルテキスト検索はどのようにGridFSで動作しますか?

gridFSにpdfやオフィスのファイルや画像のメタデータ(ファイルに関するテキストと情報)を保存できますか?

本当に大量のファイルがない場合、ElasticSearchは良いアプローチですか?

答えて

1

Elastic Searchは検索エンジンであり、MongoDBはデータベースであるため、より良い選択です。

The Ingest Attachment Processor Pluginをインストールする必要があります。これにより、ドキュメントファイルをElastic Searchにインデックス登録することができます。

MongoDBは、テキストの全文検索をサポートしていますが、インデックスhttps://docs.mongodb.com/manual/core/index-text/でバイナリデータはサポートしていませんが、検索エンジン用にできるだけ多くの詳細を設定することはできません。

多くのドキュメント/データが問題になることはありません。しかし、お客様のニーズに合った適切なテクノロジーを選択する必要があります。また、必要なのは、ドキュメントを解析するファイルアナライザと検索可能なインデックスで結果を提供することです。 MongoDBには最初の部分がなく、Elastic Searchは高度に統合された両方を提供しています。

エラスティックサーチでは、完全なドキュメントを保存して検索結果として提供することもできます。したがって、ソリューションにはデータベース(MongoDBやMySQLなど)は必要ありません。しかし、検索の結果の数や文書のサイズによっては、検索クエリの結果として複数の巨大な文書を提供する必要があるため、このアプローチでは検索の回答が遅くなる可能性があります。

一般的な解決策では、検索エンジンはドキュメントIDと、完全なドキュメントではなく、結果としてドキュメントに関するいくつかのメタ情報(タイトル、著者、最終更新など)を提供します。このようにして、データをより少ないデータ量で輸送しなければならず、応答がより速くなります。検索結果が複数ある場合は、表示するメタデータに応じて選択することができます。表示される文書は、文書IDを持つ別の要求によってロードされます。例えばデータベースまたはファイルシステムから取得します。

+0

実際のファイルをMongoDBに格納することを推奨しますが、Elasticを使用してデータを検索することをお勧めしますか? Elastic自体がデータを格納するのか、それともデータベースからのみ読み取るのか? なぜMongoでは全文検索がうまくいかないのですか?それとも、ファイル内の単語検索でうまく動作しないのですか? – Xerocry

+0

多くのご質問をおかけして申し訳ありません:) – Xerocry

+0

@Xerocry:私は自分の答えを更新しました。これがあなたの質問に答えることを願っています – Simulant