我有一个网络应用程序,向用户显示他们在特殊广告系列中的所有数据。这些广告系列可以使用不同的“标记”来保护其目的(增长,保留,忠诚度),而不仅仅是我在这里给出的。
我正在寻找一种方法,允许更高级和智能的用户创建AND / OR子句组,使他们能够专门针对某些针对其策略的广告系列。
我的标签很简单,基于索引标题。我可以为用户生成广告系列列表,但我希望在用户端实际过滤广告系列,因为他们可以下载广告系列。该网站还会包含“新”广告系列代码等内容。
因此,如果我有filterExpression
喜欢“(保留+增长)|忠诚度”,我应该会看到所有广告系列都标有保留和增长,或忠诚度。
思考?
现在我的逻辑导致了双眼。
编辑:Psuedo-Example:
Growth OR Loyalty OR Retention
= 0|1|2
filterPass = [ [0], [1], [2] ]
CampaignTags = [ 1,4,5,6 ]
//This campaign passes because it has "1"
(Growth AND Loyalty) OR Retention
= (0+1)|2
filterPass = [ [0,1] , [2] ]
CampaignTags = [ 1,4,5,6 ]
//Fails because it doesn't have "0" AND "1", OR "2"
答案 0 :(得分:5)
|
运算符,以及所有+
运算符。您上面给出的示例已经是这样的形式。粗略地说,您的算法应递归查找x+(y|z)
形式的术语,并将其替换为(x+y)|(x+z)
并展平嵌套+
和|
s。或者,如果您需要速度,请查看BDD s。