4 つの方法で検索するデータの巨大なキャッシュがあるとします。
- 完全に一致
- プレフィックス%
- %サフィックス
- %中置%
最初の 3 種類の検索にはTrieを使用していますが、要素の巨大な配列を順次処理する以外に、4 番目のものにアプローチする方法がわかりません。
4 つの方法で検索するデータの巨大なキャッシュがあるとします。
最初の 3 種類の検索にはTrieを使用していますが、要素の巨大な配列を順次処理する以外に、4 番目のものにアプローチする方法がわかりません。
データセットが巨大な場合は、 Apache Solrなどの検索プラットフォームを使用して、パフォーマンスの混乱に陥らないようにします。
#4については、各文字の出現回数を事前に計算すると、検索文字列内の文字の出現回数が少なくとも同じである全体をそのテーブルで検索できると考えています。
このアルゴリズムがどれほど効率的であるかは、おそらくデータの性質と検索文字列に依存します。より良い答えを得るために、ここで両方の例をいくつか挙げると役立つかもしれません。
You can construct a navigable map or set (eg TreeMap or TreeSet) for the 2 (with keys in normal order) and 3 (keys in reverse)
For option 4 you can construct a collection with a key for every starting letter. You can simplify this depending on your requirement. This can lead to more space being used but get O(log n) lookup times.