是否有复杂的日期过滤算法?

时间:2012-08-07 06:44:33

标签: algorithm date filter

基本上,我想要一个可以简单过滤的系统,例如“8月4日到8月7日之间”,但是要像“闰年每个星期六或每个星期一的星期一”那样复杂。

我认为为了表示复杂的布尔代数,我需要一个树结构。每个节点都可以是一个布尔运算(AND,OR,XOR,NOT)然后会有它应用的子节点,它可以是特定的过滤器或另一个布尔运算。

每个“特定过滤器”都会像“星期日”或“闰年”。我认为到目前为止所做的一切都非常可行。然而,问题出现在解析树以实际找到需要的日期,以便然后进行数据库查询以获取数据点。

通过上面的例子(每个星期六或每个星期一的每三个星期一闰年),如果我们将自己预先限制在我们拥有数据的年份(价值5年)。如果sat / mon过滤器碰巧是树中的顶级节点,我们最终会得到500个分段日期(每周2个,每年50个星期,5年)。然后,下一个节点必须搜索所有500,以找到哪些符合“每三个”过滤器。这甚至不是最复杂的例子,因为应该允许任意数量的过滤器,而XOR使它更加疯狂。

那么,有什么简单的路线吗?有人已经建立了吗?这只是涉及数据可视化的项目的一小部分,但似乎它本身可能是一个完整的项目。

1 个答案:

答案 0 :(得分:0)

我在Ruby中找到了coupleIceCube看起来很有希望,尽管它可能无法满足您的所有需求。