我的域名中有多个属性,并希望查找来自所有或多个属性的用户。
你可以使用这样的用例:
property 1: {User A,User B,User C,User D }
property 2: {User A,User B,}
property 3: {User A,User B,User C}
结果就是这样:
物业1,2,3有50%相同的用户
物业1,2有50%相同的用户
物业2,3有50%相同的用户
物业1,3有75%的相同用户
这里的问题是用户数百万(超过2000万) 我不能使用标准方法来使用任何列表方法,因为大小会非常高。
你能帮我找到一个很好的算法来解决这个用例,这个算法足以保存这种数据。
答案 0 :(得分:0)
为每个用户使用属性的位图。我们这里有3个属性,因此我们需要为每个用户提供大小为3位的位图
BITMAP : ABC => A = 0 or 1, B=0 or 1, C=0 or 1.
User 1 -> 111
User 2 -> 111
User 3 -> 101
User 4 -> 100
现在,对于任何查询,将查询编写为位图,并查找哪些用户包含该位图。
例如, 查询:属性1,2 位图 - > 110
Only user 1,2 include this bitmap.
Ans = 2/4 = 50%.
如果属性数量不大(&lt; 64或<128),您可以使用整数等来加快计算速度。