大型数据集的通用后缀树Java实现

时间:2015-11-03 20:32:50

标签: data-structures full-text-search suffix-tree suffix-array

我有大约5000万个字符串的集合,每个字符串大约有100个字符。我正在寻找非常有效(运行时和内存使用)的通用后缀树实现。

我已经尝试https://github.com/npgall/concurrent-trees但是由于运行时间有效,它需要大量的内存。 250万字符串的长度为100.已经花了50GB的内存。

1 个答案:

答案 0 :(得分:0)

不是理想的解决方案,但您可以使用enter link description here。 它有一个CritBit1D版本,你可以存储任意长度的密钥。

缺点#1: 你必须首先将你的字符串转换为long [],即。每长4-8个字符。

缺点#2: 如果您需要并发版本,则必须查看使用copy-on-write并发的Critbit64COW。但是,这还没有针对Critbit1D实现,因此您需要自己使用Critbit64COW作为模板。

但是,您只需将64位哈希码存储为密钥,然后就可以使用CritBit64(单线程)或CritBit64COW(多线程)。 顺便说一下,即使使用CritBit64,同时阅读也不是问题。

免责声明:我是CritBit的作者。