Algorithm 使用Neo4j进行基于内容的过滤?

Algorithm 使用Neo4j进行基于内容的过滤?,algorithm,neo4j,Algorithm,Neo4j,我有两个实体: -啤酒 -使用者 啤酒实体具有以下属性,即甜度1-10、苦味1-10、味特特异性1-10、味特异性1-10、国家、地区等 用户稍后将应用不同的操作关系,如评级1-5 问题是: 我怎样才能得到基于甜、苦、味的相似啤酒呢?这是对我以前喜欢的啤酒的赞扬 如何在Neo4j中创建数据模型?这是主观的;有很多不同的方法可以做到这一点,但这里有一个建议 首先,将连续变量放入分类变量中。我的意思是,假设你的甜度在1-10之间,把它分成三类:低[1-3],中[4-6],高[>6]。每个人都要这样做

我有两个实体: -啤酒 -使用者

啤酒实体具有以下属性,即甜度1-10、苦味1-10、味特特异性1-10、味特异性1-10、国家、地区等

用户稍后将应用不同的操作关系,如评级1-5

问题是: 我怎样才能得到基于甜、苦、味的相似啤酒呢?这是对我以前喜欢的啤酒的赞扬


如何在Neo4j中创建数据模型?

这是主观的;有很多不同的方法可以做到这一点,但这里有一个建议

首先,将连续变量放入分类变量中。我的意思是,假设你的甜度在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;
现在你已经有了一个符合这些类别的啤酒列表