私は約 10 億個の一意の文字列のリストを持っていますが、ほとんどは数十文字の長さです。検索文字列を含む、または検索文字列に一致するすべての文字列を、理想的には 100 ~ 200 ミリ秒未満で、できるだけ少ないハードウェアで検索したいと考えています (大量の RAM が必要になると思います)。これを保存して取得するための最良の方法は何ですか?
- 私が読んだことから、MySQL
LIKE '%search%'
はインデックスを使用していませんが、LIKE '%search'
両方とも使用LIKE 'search%'
しています。これは最後の手段として受け入れられますが、ターゲット文字列内の任意の場所で検索文字列を見つけたいので理想的ではありません。 - Redis のようなキーと値のストアを使用すると、すべての可能な部分文字列の組み合わせを格納する必要があり、大量の RAM が必要になると思います。
- 文字列のリストは、およそ 12 GB の大きさです。数十億の行/ドキュメント/レコードの代わりに、Lucene のような全文検索サーバーは実行可能ですか、それとも理想的ですか? 解析を確実に節約できます。