質問: フルテキスト検索のためにPDFまたはWord文書をインデックスする最良の方法は何ですか? 私は以下の機能を持つオフラインアプリケーションを開発しなければなりません: 1. ログインインターフェースが必要です。つまり、アクセスロールを処理する必要があります。 2. ユーザーが特定のメタデータを持つドキュメントを追加できるようにするインターフェイス。セキュリティ上の理由から、ドキュメントをローカルファイルシステムに置かなければならないとします。 3. ユーザーが特定のフィルタを使用してドキュメントを検索できるようにします(分析するにはどうすればいいですか、PDFや単語などのデータをインデックス化できます)。 4. ユーザーがドキュメントをコピーし、過去に保存して保存できるようにします。 5. データ(ドキュメント)の移行を確認します。 私の質問: * どのアーキテクチャーが最も役立つでしょうか(Javaを使ったn層MVC Webアプリケーション、)? * 何千ものドキュメントがあるので、検索エンジン(ElasticSearch、Solr、Lucene)を使うべきですか、ドキュメントを含むファイルシステムを指すRDBMS(MySQL)やNoSQL DB(MongoDBなど)/li> * オフラインアプリケーションなのでHADOOPを使用する必要がありますか?
回答: ### "私は検索エンジンを使うべきですか?" 絶対に。すべてのデータベースで何らかのフルテキスト検索が可能ですが、それはあなたの主な機能です(私が手に入れた限り)ので、最高の品種を使うべきです。私はElasticSearchと elasticsearch-mapper-attachmentsで良い経験をしていますをご覧ください。 バックエンドストレージについて:elasticsearch-mongodb-riverは、MongoDBのGridFSに格納されている添付ファイルをサポートします。 ### "どのアーキテクチャが最も有用でしょうか?" 最初にオフラインアプリケーションを開発してからWeb-MVCを求めなければならないと書いて以来、私はここにはいません。私はあなたに両方のためのいくつかのノートを与えます。 一般的には、MongoDBビルディング・ティア3、第2層のElasticSearch、フロントエンドを構築するREST/XMLRPC/SOAP APIを備えた3層サーバー・バックエンドを提案します。これにより、さまざまなアプリケーションからこのサービスを使用できます。ここでは認証と認可を実装する必要はありません。これを早急に実行するには、 Spring Data ElasticSearch < >と一緒に春のセキュリティ。 SpringのRESTと合わせて、Springの経験があれば、この設定をかなり高速に行うことができます。 この設定が完了したら、検索APIでAPI呼び出しを行うWebアプリケーションを作成するか、同じものを使用するSwingアプリケーションを作成します。または両方を構築する。 Webアプリケーションに関しては、それは私が知らない機能的および非機能的な要件に依存します。これは簡単には答えられず、通常は拡張された分析が必要です。そこには、「ワンサイズフィット」の答えはありません。 使用する技術については:ウェブには、検索APIがJavaで開発されているので、私はそれに固執します。検索APIで提案に従った場合:同じツールを使い、Spring Web-MVCまたはSpring Bootを使用します。あなたのスキルに応じて、Nodeアプリケーションを選択することもできます。アプリケーションから実際の検索を切り離すことのメリットは、基本的にDjango、Rails、Sailsなど何でも好きなものを選択できることです。 ### 「オフラインアプリなので、HADOOPを使うべきか」 Hadoopは定義ごとにネットワーク化されています。私は本当にこの質問であなたが意味するものを実際には得られませんが、私はそれが上記で答えられていると思います。