快速序列化字典树

2 投票
2 回答
1351 浏览
提问于 2025-04-18 04:10

2 个回答

3

我知道我不是在给出一个Python的答案,但这可能还是有用的:

创建、压缩和存储一个前缀树(trie)其实是个很难的任务。我花了不少时间思考自动建议的数据结构,按照我所知道的,最优雅的解决方案是由Giuseppe Ottaviano提出的,在我的博客文章中部分描述过

虽然在Python中实现Ottaviano在他的论文中描述的完整解决方案可能没有太大意义,但你可以考虑他的基本思路:把整个前缀树存储为一个大的内存块,只保存跳转到下一个位置的引用。

这样,你就可以很方便地将这个数组或内存块序列化到硬盘上。我对Python的具体实现不是很确定,但我觉得这个操作应该可以工作,而且比序列化一个数据结构要快得多。

我知道Ottaviano的工作有C语言的实现,你甚至可以使用Python的C语言绑定。

1

我最后把这个字典树存储在了MongoDB里。

虽然这样会有一些网络延迟,但如果数据库是在本地的话,影响并不是很大。

撰写回答