フルテキスト検索のためにPDFまたはWord文書をインデックスする最良の方法は何ですか?

私は以下の機能を持つオフラインアプリケーションを開発しなければなりません:

  1. ログインインターフェースが必要です。つまり、アクセスロールを処理する必要があります。
  2. ユーザーが特定のメタデータを持つドキュメントを追加できるようにするインターフェイス。セキュリティ上の理由から、ドキュメントをローカルファイルシステムに置かなければならないとします。
  3. ユーザーが特定のフィルタを使用してドキュメントを検索できるようにします(分析するにはどうすればいいですか、PDFや単語などのデータをインデックス化できます)。
  4. ユーザーがドキュメントをコピーし、過去に保存して保存できるようにします。
  5. データ(ドキュメント)の移行を確認します。

私の質問:

  • どのアーキテクチャーが最も役立つでしょうか(Javaを使ったn層MVC Webアプリケーション、)?
  • 何千ものドキュメントがあるので、検索エンジン(ElasticSearch、Solr、Lucene)を使うべきですか、ドキュメントを含むファイルシステムを指すRDBMS(MySQL)やNoSQL DB(MongoDBなど)/li>
  • オフラインアプリケーションなのでHADOOPを使用する必要がありますか?
1
なぜあなたは私の編集を元に戻しましたか?
追加された 著者 Dave Ward,
さて、np;私はそれを巻き戻した。 - 「Javaを使ったn-tier MVC Webアプリケーション」の「with」の後にいくつかの言葉を忘れましたか?
追加された 著者 Dave Ward,
すみません、私はそれを受け入れたと思っていました!
追加された 著者 user19238,

1 答え

"私は検索エンジンを使うべきですか?"

絶対に。すべてのデータベースで何らかのフルテキスト検索が可能ですが、それはあなたの主な機能です(私が手に入れた限り)ので、最高の品種を使うべきです。私は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は定義ごとにネットワーク化されています。私は本当にこの質問であなたが意味するものを実際には得られませんが、私はそれが上記で答えられていると思います。

あなたの答えに感謝します。MongoDB、Elastic、Spring MVC、Spring Securityの3層Webアプリケーションを提案していますが、私の文書(Word、PDF、...)とmy mongodbをファイルシステムまたはelasticsearchにリンクする必要がありますか?分散アプリケーションではないのでSolrやluceneだけを使用しないでください。規模の問題はあります。少なくとも、この3層のソリューションで私が立ち上げて走れる便利なリソースやチュートリアルを教えてください。よろしく
追加された 著者 user19238,
おかげさまで、あなたのアーキテクチャをgithubで設定して共有して、スターターポイントとして使用してください。
追加された 著者 user19238,
@ナオ私は恐れますが、あなたはこれを自分で掘る必要があります。これのためのチュートリアルはありません。また、ElasticSearchをMongoDBのGridFS(ファイルの格納場所)にリンクします。あなたはSolrやLuceneを使うことができますが、あなたはそれを自分で統合する必要があります。私が提案したスタックでは、その努力は比較的小さい;)。スケーリングの問題?いいえ、あなたが適切に拡大縮小する方法を知っていれば。スケーリングは、適切に行うには非常に難しいことですが、スコープの外にはありません。しかし、一般的に、私が提案した設定は、ほぼ無限にスケーラブルです。初心者にとって最も役に立つリソース: university.mongodb.com/courses/M102/about
追加された 著者 charlie48,