快速标签搜索算法
问题如下。 有一组简单实体E,每个实体都有一组附加的标签T。每个实体可以具有任意数量的标签。实体总数接近1亿,标签总数约为5000。 因此,初始数据如下所示: E1 - T1, T2, T3, ... Tn E2 - T1, T5, T100, ... Tk .. Ez - T10, T12, ... Tl 初始数据很少更新。 我的应用以某种方式在标签上生成逻辑表达式,如下所示: T1&T2&T3 | (T5&!T6) 我需要计算与给定表达式匹配的实体数量(注意-不是实体,而是数量)。当然,这可能并不完全准确。 我现在得到的是一个简单的内存中表查找,使我在单个线程上有5-10秒的执行时间。 我很好奇,有什么有效的方法来处理这些东西吗?您会推荐哪种方法?有一些通用的算法或数据结构吗? 更新资料 根据要求进行一些澄清。 T对象实际上是较短的常量字符串。但这实际上并不重要-我们总是可以分配一些ID并对整数进行运算。 我们绝对可以对它们进行排序。