我有多个数组,大约有 100 个可能的值,即:
a[0] = (a, b, c, d)
a[1] = (a, e)
a[2] = (d, f, g)
我想快速返回哪些数组包含 (a || b) && (d || e)
在这个例子中,0 和 1
我在考虑按位运算……比如用“1111”表示“abcd”; “广告”由“1001”等。然后我可以用按位或来解决“或”,然后检查两者是否非零
谁能想出更好的解决方案?这个不是很实用,因为它似乎不是很容易升级
是否有任何 DBMS 可以快速做到这一点?我试过 mongodb,但他们似乎还没有添加“$and”功能(文档说它是 1.9.1 版本,但我只能下载 1.9.0,而且它不稳定)
我想这是一个“ bool 搜索”,类似于谷歌一直在做的……所以我猜有比这更好的方法(可能不是那么快,但更可升级)
最佳答案
是的,按位解决方案对此非常有效。是的,一些数据库包含这样的功能,通常称为位图列(或位图索引,视情况而定)。通常的建议是将其应用于基数相对较低的列(即可能值的数量相当少,例如性别)。
关于c - 数组上的 bool 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825287/