私は検索プロジェクトに取り組んでおり、数百万のドキュメントを検索する検索エンジンを構築しています。同じことを行うための既存の最善の方法、開始点などに関して必要なヘルプもあります。ElasticSearchとApacheSOLRも約1,000万回試しました。ドキュメントですが、時間がかかるのは数秒(2〜4秒)です。
3 に答える
数百万のドキュメントと十分に高速な全文検索の場合、Term Document Matrixやその他の種類の逆索引付けなどの方法論を使用して適切な検索エンジンを回避することはできません。
全文検索エンジンの基本を読んで最も重要なアイデアを理解してから、必要なことを実行する優れたライブラリを探すことをお勧めします。(真剣に時間を費やす準備ができていない場合は、独自の検索エンジンを作成することはお勧めしません。)
推奨読書:
(これらのポインターが必要かどうかはわかりません。これらのことについて既に知っている場合は、それで十分です。;))
=>何を使用するかについての実際の提案については、Java 用の全文検索エンジン ライブラリであるApache の Luceneを使用して成功しました。ドキュメントのインデックス作成、トークン化、単語ステミング、ストップ ワードなどに非常に役立ちます。また、論理的に結合されたキーワードから検索をつなぎ合わせることができます (たとえば、「foo」を検索して、「bar」または「bar」を含まないドキュメントのみを表示する)。 'qux など)。
当時、私は数百万の文書を索引付けし、非常に短時間で検索結果を得ることができました。つまり、目立った遅延はありませんでした。
Sphinx ( http://sphinxsearch.com/ ) は、フルテキスト検索専用の別のソフトウェアであり、Lucene に近い一連の機能を備えていますが、クライアント側の API と複数の言語のバインディングを備えたスタンドアロン サーバーです。
craiglist などの一部の有名な Web サイトでは、Web サイトで言及されているように、検索エンジンとして使用され、非常に良い結果が得られます。
無料の案内広告サイトである Craigslist.org は、Sphinx に対して 1 日あたり約 2 億 5000 万のクエリを実行すると噂されています。信じられないかもしれませんが、これは 15 個のクラスター化された Sphinx ボックスで達成され、ピーク時には総容量の 1/4 しか消費しません。
ElasticSearch は Lucene の上に構築されており、主にエンジンの「弾力性」に重点を置いています。各ドキュメントが大きくなく、10M ドキュメントがメモリに収まる場合は、多くの高度な機能を備えたミリ秒単位の検索をサポートできる SRCH2 などの高度なソリューションを検討できます。