我有N
个唯一元素,从0开始索引,以及使用这些元素创建的数组数据库。数据库是不变的,不会改变。给出了一个查询数组,每个调用都不同。
我必须选择与查询数组具有至少K
个元素(例如,一半)的db数组。
我想到的一个解决方案:有一个长度为N
的位数组,设置对应于查询堆栈元素的位,并遍历整个数据库一次,用<过滤掉数组。 K
。这是相当可扩展的,但有点慢,似乎可能更快的方法......
注意:
答案 0 :(得分:0)
使用倒置索引。
搜索引擎用于查找查询匹配的内容。
答案 1 :(得分:0)
如果数据库已修复,则可以构建包含项和数组的表。所以如果你有两个数组:
A = {1, 7, 9, 12, 15}
B = {7, 12, 15}
你的桌子会是:
Item Array
1 A
7 A
7 B
9 A
12 A
12 B
15 A
15 B
这实际上是一个倒排索引。
现在,给定查询数组{1, 5, 7, 12}
,您可以在数据库中查询所有这些项目。
select * from ItemArrayIndex where Item in (1, 5, 7, 12) order by Array
然后计算每个数组存在多少项。
想想看,如果按Array分组,你可以从SQL查询中获取计数。不过,我的SQL有点生疏了。 。