0

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

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

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

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

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

4

1 回答 1

0

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

于 2012-08-07T06:57:01.190 回答