0

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

4

1 回答 1

1

我会试一试;我已经在 C++ 中为 Ruzzle-solver 程序实现了这样的解决方案,我可以确认它非常有效 - 尽管在 Python 中你肯定会得到更差的性能,因为 Python 相当于这样的 trie 节点:

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 数组要慢),因此开销更大。

于 2013-03-02T15:26:37.700 回答