在neo4j中使用权重作为关系构建推荐系统

问题描述 投票:0回答:1

在我的图表中,我们的用户与产品有 2 个称为“最喜欢”和“看过”的关系,并且产品有称为“有”的关系,具有一些规格,如颜色(红蓝...)、类型(牛仔裤...)和尺寸(30...)

我编写了一个查询,每当我想创建最喜欢或看到的关系时,它都会与该特定用户和该产品的规格(称为“重量”)建立关系,并为称为“分数”的属性设置属性。

每次用户将产品设置为最喜欢的或只是看到该产品(例如当用户看到该产品时),我想增加这个分数,分数更改为+10,最喜欢的分数更改为+20,然后我们推荐得分最高的规格产品。

我的查询是:

match (user:Users{m_id:""}),(m:Products{m_id:""})-[:HAS]->(a:Specifications)
MERGE (user) -[:FAVORITE]-> (m)
merge (user)-[:WEIGHT{score:0}]->(a)

此查询的另一个问题是,如果我已经有了新的关系,我不想建立新的关系;我只是想提高分数

enter image description here

neo4j
1个回答
0
投票

您只需合并关系,然后相应地设置属性。

MERGE (user)-[w:WEIGHT]-(a)
ON CREATE SET w.score = 10
ON MATCH SET w.score = w.score+10

或者无条件更新

MERGE (user)-[w:WEIGHT]-(a)
SET w.score = coalesce(w.score,0)+10
© www.soinside.com 2019 - 2024. All rights reserved.