繁体   English   中英

什么食谱与苹果烤饼最相似-按照与该食谱相似的顺序输出其他食谱的成分列表

[英]What recipe is the most similar to apple scones - output list of ingredients from other recipes in order of similarity to this recipe

到目前为止,这是我所做的:

MATCH (:Cake{name: 'Apple Scones'})-[n]-(a)
WITH COLLECT(a) AS list
MATCH (b)-[:CONTAINS]->(a)
RETURN list

我试图得到与苹果烤饼中的食材最相似的蛋糕。 我有苹果烤饼中所有成分的清单,但不确定如何将其与其他蛋糕进行比较。

任何反馈将不胜感激。

谢谢

此查询可能会执行您想要的操作:

MATCH (:Cake {name: 'Apple Scones'})-[:CONTAINS]->(i)<-[:CONTAINS]-(recipe)
RETURN recipe, COLLECT(i) AS sharedIngredients
ORDER BY SIZE(sharedIngredients) DESC;

它返回每种食谱,这些食谱至少具有与Apple Scones相同的一种成分,以及一系列共享成分。 结果按共享成分数的降序返回。

该查询无法很好地进行...在WITH中,您没有带来a ,因此您的后续匹配将在与任何对象具有:CONTAINS关系的所有节点上进行匹配。 那将是大量的节点。

您可以查看此知识库文章以获取洞见。

这是一个查询,将查找包含完全相同成分的配方:

MATCH (:Cake{name: 'Apple Scones'})-[:CONTAINS]-(a) 
WITH a, size((a)<-[:CONTAINS]-()) as degree
ORDER BY degree ASC
WITH collect(a) as ingredients
WITH tail(ingredients) as list, head(ingredients) as first
MATCH (first)<-[:CONTAINS]-(recipe)
WHERE ALL(i in tail(list) WHERE (i)<-[:CONTAINS]-(recipe))
RETURN recipe

否则,您可能会寻找一个查询,将所有成分与包含它们的所有配方匹配,然后按那些具有最常见成分的配方进行排序,并获得一些有限的结果:

MATCH (:Cake{name: 'Apple Scones'})-[:CONTAINS*2]-(recipe)
WITH recipe, count(recipe) as commonIngredients
ORDER BY commonIngredients DESC
LIMIT 5
RETURN recipe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM