我有两个实体: - 啤酒 - 用户
Beer实体具有以下属性(甜度1-10,苦味1-10,TasteAttributeX 1-10,TasteAttributeY 1-10,国家,地区等。
用户稍后将应用不同的操作(关系),例如评分(1-5)。
问题: 我怎样才能将类似的啤酒(基于Sweetness,Bitterness,TasteAttributes)与我之前喜欢的啤酒相提并论。
您如何在Neo4j中创建数据模型?
答案 0 :(得分:0)
这是主观的;会有很多不同的方法,但这是一个建议。
首先,将连续变量分类为分类变量。我的意思是,比如说你的甜度为1-10,分为三类(低[1-3],中(4-6),高[> 6])。为每个类别做这个。
其次,为每个类别创建一个“索引节点”。像这样:
CREATE (l:Sweetness {label:"Low"});
MATCH (b:Beer),(l:Sweetness {label:"Low")
WHERE b.sweetness <= 3
CREATE b-[:sweetness]->(l);
为每个“类别”执行此操作。
然后,您可以找到具有类似配置文件的相关啤酒:
MATCH (b:Beer { type: "ThisOneIKnowIReallyLike" })-[:sweetness]->(sweetCategory:Sweetness)<-[:sweetness]-(otherBeer:Beer),
b-[:bitterness]->(bitterCategory:Bitterness)<-[:bitterness]-(otherBeer)
WHERE b <> otherBeer
RETURN otherBeer;
现在您已经获得了符合相同类别的啤酒列表。