想象一下,您想序列化和反序列化 stackoverflow 帖子,包括它们的标签,尽可能有效地节省空间(以二进制形式),而且在进行标签查找时也能提高性能。这种场景有没有好的数据结构?
Stackoverflow 有大约 28532 个不同的标签,您可以创建一个包含所有标签的表格并为它们分配一个整数,此外您可以按频率对它们进行排序,以便最常见的标签具有最低的数字。从搜索和存储的角度来看,仍然像“1 32 45”格式的字符串一样简单地存储它们似乎有点低效
另一个想法是将标签保存为变量位数组,这从查找和序列化的角度来看很有吸引力。由于最常见的标签是第一个,因此您可能会将标签放入少量内存中。
问题当然是不常见的标签会产生巨大的位数组。是否有任何标准用于“压缩”大跨度 0 的位数组?还是应该完全使用其他结构?
编辑
我不是在寻找数据库解决方案或需要将整个表保存在内存中的解决方案,而是用于过滤单个项目的结构