2012-01-24 4 views
0

私は、すべてのユーザーのデータを特別なキャンペーンにまとめたウェブアプリケーションを持っています。これらのキャンペーンには、目的(成長、保持、忠誠心)を盛り込んださまざまな「タグ」があります。タグのAND/ORロジックを実装するにはどうすればよいですか?

私が探しているのは、より高度でインテリジェントなユーザーが戦略を目標とする特定のキャンペーンを具体的に探すためのAND/OR句のグループを作成する方法です。

私のタグは、単純なインデックスベースのタイトルです。ユーザーのキャンペーンのリストを生成することはできますが、キャンペーンを実際にフィルタリングするには、キャンペーンをダウンロードできるので、ユーザー側で実際にフィルタリングする必要があります。サイトには、「新しい」キャンペーンタグなどもあります。

「(Retention + Growth)| Loyalty」のようなfilterExpressionがある場合は、保持と成長の両方のタグを付けられたすべてのキャンペーンが表示されます。

思考?

今、私のロジックは目を逸らしています。

編集:擬 - 例:

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" 
+1

あなたのオブジェクトやHTMLやコードの外観がわからないので、現在の質問の内容に基づいて助けが非常に困難です。 http://tinyurl.com/so-hints –

+0

私はこれを実装する方法を探していなければならない情報や場所が不足していると確信しています。私のコードはここでは役に立たないでしょう。 –

+0

私はより多くのアシスタントになれます。私はウェブサイトを表示するためにどのような言語を使用しているのか分かりませんが、ユーザーが自分がやっていることをやり遂げる方法(ポストバック、Ajax)を作成したいと思う方法はわかりません。私はあなたにデータをフィルタリングするより良い方法を教えてくれません。 –

答えて

5
  1. @daveによって示されるように、インフィックスフォームに発現を解析。
  2. 再帰アルゴリズムを使用してこれをdisjunctive normal formに変換します。つまり、最上位にすべて|演算子があり、その中にすべて+演算子が含まれています。上記の例は、すでにこのような形になっています。おおまかに言えば、アルゴリズムはx+(y|z)という形式の用語を再帰的に見つけて、(x+y)|(x+z)と置き換えて、+|を入れ子にしてフラットにします。
  3. タグのセットがそのアイテムにすべて貼り付けられている項目が存在するかどうかをチェックすることで、タグのセットが式と一致するかどうかを確認できるようになりました。

また、速度が必要な場合は、BDDを参照してください。

+0

これは大丈夫です、これは私が探していたもののようです。それは醜いですが、私は腰を下ろしてそれを理解します。ありがとう! –

関連する問題