Я ищу реализацию дерева суффиксов с этим дружественным API, который имитирует словарь Python:
import SubstringDict
d = SubstringDict.SubstringDict()
d['foobar'] = 1
d['barfoo'] = 2
d['forget'] = 3
d['arfbag'] = 4
d['a']
>>> [1, 2, 4]
d['arf']
>>> [2, 4]
d['oo']
>>> [1, 2]
d['food']
>>> []
Я взял этот пример с этого сайта: Суффикс деревья в Python
Вы можете спросить: «Почему бы вам не использовать реализацию с веб-сайта?» Ну, очевидно, у нее есть некоторые утечки памяти в привязках Python, поэтому я не могу использовать ее с моим большим (1,2 миллиона строк, около 200 МБ) набором данных ,
Я был бы даже счастлив с реализацией C ++ (я могу написать привязки Python самостоятельно) со следующим API:
SuffixTree<int> sf = SuffixTrie<int>();
sf['foobar'] = 1;
sf['barfoo'] = 2;
sf['forget'] = 3;
assetTrue(sf.find('a')==std::vector<int>({1,2}))
Есть намеки?
Задача ещё не решена.
Других решений пока нет …