布尔搜索数组

Lem*_*m0n 7 c database algorithm database-design

我有多个数组,大约有100个可能的值,即:

a[0] = (a, b, c, d)
a[1] = (a, e)
a[2] = (d, f, g)
Run Code Online (Sandbox Code Playgroud)

我想快速返回哪些数组包含(a || b)&&(d || e)

在这个例子中,0和1

我正在考虑按位操作...就像用"1111"代表"abcd"一样; "ad"by"1001",依此类推.然后我可以用一个按位OR解决"OR",然后检查两者是否都是非零

任何人都可以考虑更好的解决方案?这个不是非常实用,因为它似乎不是很容易上升的

有没有DBMS可以快速做到这一点?我尝试使用mongodb,但似乎他们还没有添加"$和"功能(doc说它是1.9.1版本,但我只能下载1.9.0,而且它不稳定)

我认为这是一个"布尔搜索",类似于谷歌一直在做的...所以我猜测有一个更好的方法(可能不是那么快,但更可升级)

Jer*_*fin 1

是的,按位解决方案对此非常有效。是的,某些数据库包含这样的功能,通常称为位图列(或位图索引,具体取决于)。通常的建议是将其应用于基数相对较低的列(即,可能值的数量相当少,例如性别)。