すでに多くの回答がありますが、2 セント追加したかっただけです:
<オール>提案
<オール>実装に関しては、Elasticsearch(ES) を使用することをお勧めします。セットアップとスケーリングが非常に簡単なので、AWS Elasticsearch を使用することもできます。私は AWS ES の大ファンではありませんが、セットアップに多くの時間を節約でき、ES に精通していればすぐに使い始めることができます。
検索を高速化するために、ファイルを複数のフィールド (タイトル、本文、タグ、作成者など) に分割し、重要なフィールドのみにインデックスを付けることができます。これにより、逆インデックスのサイズが小さくなり、正確な文字列の一致 (部分的または全文検索なし)、単に keyword
を使用できます 索引付けと検索がさらに高速です。
ほとんどすべての回答が示唆しているように、明らかにインデックスが必要です。ハードウェアを完全に改善することはできますが、修正済みとのことなので、詳しく説明しません。
関連するヒントがいくつかあります:
<オール>マイナー アップデート:
ここでの多くの回答は、データをクラウドに置くことを提案しています。匿名化された医療データであっても、(Web からデータをスクレイピングした場合を除き) ソースに問題がないことを確認することを強くお勧めします。
検索を高速化するには、逆索引が必要です。既存のすべてのファイルのインデックスを再作成する必要なく新しいドキュメントを追加できるようにするには、インデックスをインクリメンタルにする必要があります。
インクリメンタル インデックス作成を導入した最初のオープン ソース プロジェクトの 1 つは Apache Lucense です。現在でも最も広く使用されているインデックス作成および検索エンジンですが、その機能を拡張する他のツールが最近普及しています。 Elasticsearch と Solr はどちらも Lucense に基づいています。ただし、Web フロントエンド、分析クエリ、フィルタリング、グループ化のサポート、テキスト以外のファイルのインデックス作成のサポート、または複数のホストにわたるクラスター セットアップのインフラストラクチャが必要ない限り、Lucene は依然として最良の選択です。
Apache Lucense は Java ライブラリですが、完全に機能するコマンドライン ベースのデモ アプリケーションが付属しています。 この基本的なデモでは、必要な機能がすべて提供されています。
ある程度の Java の知識があれば、アプリケーションをニーズに合わせることも簡単です。デモ アプリケーションのソース コードがいかに単純であるかに驚かれることでしょう。 Java を選択したくない場合は、Pyhton のラッパーである PyLucene も代替言語になる可能性があります。デモ アプリケーションのインデックス作成は、すでにほぼ最小限に抑えられています。デフォルトでは、ステミングや複雑なクエリの最適化などの高度な機能は使用されません。これらの機能は、ほとんどの場合、ユースケースには必要ありませんが、インデックスのサイズとインデックス作成時間が増加します。