我想基于当前购物车内容与其他(已经放置)订单相比创建推荐引擎,并考虑使用如下图表:
<objectAnimator
android:propertyName="strokeLineCap"
android:valueFrom="2"
android:valueTo="0"
android:valueType="floatType"
android:duration="500"
android:interpolator="@android:interpolator/fast_out_slow_in" />
我是Neo4j / Cypher的新手,如果有人能指出我对下面问题的正确方向,我将不胜感激:
是否有可能根据我当前的购物车获取其他已经下订单,这些订单包含最相似的产品(至少是我当前购物车中的产品)并推荐delta产品,即减去我们共同拥有的产品并推荐其他的......这可能吗?
我们说没有其他订单包含我购物车中的所有商品。是否有一种方法可以根据共同下降的产品数量对订单进行分组,并获取&#34; delta产品&#34;对于每个订单(让我们说前10个订单)?
答案 0 :(得分:0)
问题不是很清楚,但我会尽力提供答案:
是否有可能根据我当前的购物车获取其他已经下订单,这些订单包含最相似的产品(至少是我在当前购物车中的产品)并推荐delta产品,即减去我们共同的产品并推荐其他的......这可能吗?
是的,有可能。减法可能非常棘手(因为Cypher目前缺少MINUS
子句),但您可以使用列表推导来计算它:
WITH [1, 2, 3, 4] AS xs, [3, 4, 5] AS ys
RETURN [x IN xs WHERE NOT x IN ys | x]
此外,如果你减去关系,你可能想要使用负模式条件(WHERE NOT <pattern>
):
MATCH (p:Product) ...
WHERE NOT (p)-[:SOME_REL_TYPE]->(:SomeNodeLabel)
RETURN p
假设没有其他订单包含我购物车中的所有产品。是否有一种方法可以根据共同下降的产品数量对订单进行分组,并为每个订单获取“delta产品”(假设前10个订单)?
要计算常见产品的数量,请使用针对同一MATCH
节点的p
子句。
MATCH
(u1:User {id: $currentUser})-[:PUT_ORDER]->(:Order)-[:CONTAINS_PRODUCT]->(p:Product),
(u2:User)-[:PUT_ORDER]->(:Order)-[:CONTAINS_PRODUCT]->(p)
WITH u1, u2, count(p) AS commonProducts
ORDER BY commonProducts DESC
LIMIT 10
// continue calculation with u1, u2