想象一下,您有一个巨大的数据缓存,要通过 4 种方式进行搜索:
- 完全符合
- 字首%
- %后缀
- %中缀%
我将Trie用于前 3 种类型的搜索,但除了顺序处理大量元素之外,我不知道如何处理第 4 种类型的搜索。
想象一下,您有一个巨大的数据缓存,要通过 4 种方式进行搜索:
我将Trie用于前 3 种类型的搜索,但除了顺序处理大量元素之外,我不知道如何处理第 4 种类型的搜索。
如果您的数据集很大,请使用像Apache Solr这样的搜索平台,这样您就不会陷入性能混乱。
对于#4,我在想如果您预先计算每个字符的出现次数,那么您可以在该表中查找在搜索字符串中至少有相同次数出现的字符。
该算法的效率可能取决于数据的性质和搜索字符串。在这里给出一些例子以获得更好的答案可能会很有用。
您可以为 2(键按正常顺序)和 3(键反向)构建可导航的地图或集合(例如 TreeMap 或 TreeSet)
对于选项 4,您可以构建一个集合,其中每个起始字母都有一个键。您可以根据您的要求简化此操作。这可能会导致使用更多空间,但会获得 O(log n) 查找时间。