我遇到了以下情况:
我有一个非常大的字符串集合(假设有250,000个+),平均长度可能为30个字符。
我需要在这些字符串中进行许多搜索,大多数情况下会使用StartsWith和Contains类型的搜索。
集合在运行时是静态的。这意味着只需一次读取和填充首选集合即可..因此构建数据结构的性能绝对不重要。内存也不是问题:这也意味着如果需要的话,我不介意有两个具有相同数据的集合(例如一个用于startswith,另一个用于contains)。唯一重要的是搜索的性能,应该返回与搜索条件匹配的所有元素。
对于startswith,我遇到了Trie或Radix-tree,但也许还有更好的选择?
对于contains..我还没有很好的主意(除了在列表上运行linq查询,这在这么多数据的情况下不会非常快)。
提前感谢大家!
更新:我忘记了一个重要部分:对于包含,我的意思是集合中没有确切匹配的字符串..但我想找到包含给定搜索字符串的所有字符串。
集合在运行时是静态的。这意味着只需一次读取和填充首选集合即可..因此构建数据结构的性能绝对不重要。内存也不是问题:这也意味着如果需要的话,我不介意有两个具有相同数据的集合(例如一个用于startswith,另一个用于contains)。唯一重要的是搜索的性能,应该返回与搜索条件匹配的所有元素。
对于startswith,我遇到了Trie或Radix-tree,但也许还有更好的选择?
对于contains..我还没有很好的主意(除了在列表上运行linq查询,这在这么多数据的情况下不会非常快)。
提前感谢大家!
更新:我忘记了一个重要部分:对于包含,我的意思是集合中没有确切匹配的字符串..但我想找到包含给定搜索字符串的所有字符串。