我可以用重复值提高字典的记忆效率吗



我正在用Python实现搜索引擎,理想情况下,我希望将尽可能多的反向索引存储到内存中。

索引的当前数据结构如下:{term: [doc_frequency, {doc_number: [doc_positions]}]},其中term是字符串,doc_frequencydoc_numberdoc_positions是整数。对于多个文档来说,这个大小会很快膨胀。

由于文档编号和位置经常是不同术语的重复整数,我在想,是否有一种方法可以利用这一特性,即不每次存储一个新整数,而是多次引用同一整数?

我根本不是数据结构或Python方面的专家,所以如果这是一个愚蠢的问题,请原谅我。如果除了我的具体问题之外,还有其他可以提高内存使用率的建议,我们也非常欢迎。

我担心存储一个指向整数而不是整数的指针(引用(不会有帮助,因为指针的大小在您的系统上很可能是64位(如果您使用的是32位python,则可能是32位(。

Python使用可变大小的整数,但平均而言,每个整数应该小于或等于64位。如果您最常使用小数字,请参阅:https://www.pythontutorial.net/advanced-python/python-integers/.

如果您可以使用某些有限范围的整数,则可以尝试使用指定dtype的numpy。请参阅:https://numpy.org/devdocs/user/basics.types.html.但是,您可能需要更改存储结构。

最新更新