我正在寻找一种针对范围查询和空间使用进行了高度优化的字符串(UTF-8)索引的数据结构。谢谢!
详细说明:我有任意长度的utf-8字符串的列表,我需要索引。我将只使用范围查询。
例如:我有字符串-苹果,猿,黑,酷,黑。
查询应该是这样的-- "get from 2 to 3 element in desc order“或"get strings start by 'ap'”
发布于 2010-10-11 13:35:32
既然你提到了“相对静态”,一个简单的排序数组就可以做你想要的一切,并且在空间和时间上都是高度优化的。
"get from 2 to 3 element in desc order“只是简单地查找对应的数组索引。
“获取以‘ap’开头的字符串”可以通过二进制搜索来完成。搜索将在第一个以“ap”开头的字符串或之前停止,从那里开始,您只需遍历,直到找到所有这样的字符串。
发布于 2010-10-11 18:28:43
你查过Tries了吗?
结构应该适合你的需要-范围和‘开始于’都应该是容易的,加上内存消耗也很好。
发布于 2010-10-12 07:23:49
我确实喜欢casablanca的回答:由于您的数据是相对静态的,排序列表应该是可以的。
如果你想要更容易更新的东西,你可以使用blist.sortedlist。
你甚至可以使用ZODB的BTrees,它已经包含了你想要的大部分功能(即范围搜索)。
https://stackoverflow.com/questions/3903664
复制相似问题