如何在服务器上存储,并最有效地访问大词表?

时间:2013-03-02 14:50:47

标签: python database dictionary tree store

我需要为我的webapp提供一个大约200k字的单词列表文件,我想显示单词,这些单词以某个子字符串开头,例如:'clo'。我应该将它存储在数据库中,并通过简单的查询访问它吗?我考虑过从这个wordlist创建一个树并将其存储在缓存中,然后只搜索这个树以找到合适的单词。在我的观点中,这应该是更好的解决方案,特别是当涉及每分钟更多的请求时。 你会如何以最有效的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

我会选择trie;我已经在C ++中为Ruzzle-solver程序实现了这样的解决方案,我可以确认它非常高效 - 尽管在Python中你肯定会因为Python的等效性而变得更差像这样的特里节点:

class AlphaTrie
{
    // Pointers for the next trie nodes
    std::auto_ptr<AlphaTrie> next[26];
    // true if the current node marks the end of a word
    bool final;
    // ...
};

将包含较少的简单数据结构(例如,访问Python列表比直接存储在节点中的“哑”C数组慢),因此具有更大的开销。