需要指导向的评估布尔逻辑树
题
我似乎找不到一个指向正确的方向,我甚至不确定什么条款,我应该研究,但无数个小时的搜索似乎是抽丝我在圈子,所以希望的集体配置单元的情报的堆溢出,可以帮助。
问题是这样的,我需要方式过滤数据在什么,我只能呼叫一个合逻辑的树。目前的系统实现一个简单的和过滤系统。例如,可以说,我们有一个数据集的人。你加上一堆这种过滤器,显示所有的人在哪里(性=的女性)和(年龄>23)和(年龄 < 30)和(Status=单个)。足够容易,迭代过各个项目,增加有效项目的收集只有当每一个条件是真实的。
这问题我遇到的是我怎么处理用户能够建立复杂的查询所涉及的,或者是?我在想的东西就像一棵树,其中每个节点代表和表达评估其儿童真正的或虚假的。一个简单的例子就是过滤下((性==的男性和年龄==25)或(性==性和女性状况==单))和智商超过120.对不起我不能想到一个更好的例子。但你会如何去表示这种类型的表达树,并评估该项目在收集对这些过滤器。什么是一些参考文献,将帮助吗?妈的,一些是什么该死的谷歌搜索可能导致进入一个积极的方向?!
谢谢你,这对任何人都可以提供任何帮助。
这里是一个例子的一个合查询在树形式使用数据集的人
- 查询显示了我所有的人,其中性别是男性和眼睛都是绿色或性别为女性,眼睛是蓝色的,或者地位,是单一的。在括号形式(性==男&眼睛==Green)||(性==女&&(眼睛==蓝||Status==单))
所以在树形式im思考
o-Root Node
- And - Sex = Male
- And - Eyes = Blue
- Or - Sex = Female
- And Eyes = Blue
- Or Status = Single
我相信解决方案是代表每个节点等,在数据结构
Node
{
OpType - AND or OR
ExpressionField - The field to evaluate
ExpressionOp - =, !=, >, >=, <, <=
ExpressionValue - the value to compare the field's value against
Function Evaluate() - returns a bool
}
因此,对于给定的一个节点,评价欢欣,如果你是一个和节点,然后返回真的,如果你表达结果在真正的和所有你和儿童的评估,真正的或任意的或儿童的计算结果为真正的和recurse。
似乎满足每一个概念性条件,我可以扔掉它,但我们将由于我曾经执行。我会发布的真实代码最后,当它的工作和图片,以帮助描述这个问题更好地为其他人。
解决方案
你分析的表达((性==的男性和年龄==25)或(性==性和女性状况==单))和智商超过120看起来很奇怪。我要分析它为:
* And
* Or
* And
* ==
* Sex
* Male
* ==
* Eyes
* Blue
* And
* ==
* Sex
* Female
* ==
* Status
* Single
* >
* IQ
* 120
树类型是:
Node
{
bool evaluate ()
}
AndNode : Node
{
Node left
Node right
bool evaluate ()
{
return left.evaluate () && right.evaluate ()
}
}
// OrNode is similar
EqualsNode : Node
{
Field field
Value value
bool evaluate ()
{
return field.value () == value
}
}
// Likewise for <, >, etc
其他提示
这些类型的查询是经常呈现为 OR
ed列 AND
ed条款。那是一个表格格式在你读横跨多个条件 AND
ed一起,然后读取下来 OR
它们。这导致一些重复的条件,但是方便用户的读、写和理解。你的样本 ((Sex == Male AND Age == 25) OR (Sex == Female AND Status == Single)) AND IQ > 120
看起来像
Sex == Male & Age == 25 & IQ > 120
Sex == Female & Status == Single & IQ > 120
你可能想要谷歌的术语如'上游的微积分"和"连接正常的形式'。
我必须说,这就是为什么数据库引擎。你可以做一切你需要与设的逻辑,你甚至可能达成的结果你所寻找的,但论文的标准问题解决数据库和SQL。你也可以看看皇宫为一个在码解决方案。
听起来你需要创建一个用户界面,使建立一个简单的分析树。当按下去然后你可以走树,并创建一个皇宫的表达树,用户接口的结构。执行皇宫查询和后处理结果作必要的。因此,我建议您读了皇宫表达的树木。