我正在尝试匹配图表中的列表可用性(类似Airbnb)。
我正在尝试编写一个查询,该查询返回从start_date到end_date的所有列表。
我知道以下FOREACH语法不正确,但我可能会帮助提出一般性的想法:
MATCH period=(a)-[:NEXT_DAY*]->(c)
WHERE a.date="2013-01-20" AND c.date="2013-01-24"
MATCH (listing:Listing)-[:AVAILABLE]->(d:Date)
FOREACH (d IN nodes(period))
RETURN listing
奖金问题:如果我想按照与查询的可用性匹配的比例对比列表进行评分,我该怎么办?(例如,如果列表在整个期间可用,则为100%,如果只有一半,则为50%期间)?
提前致谢:)
本杰明
答案 0 :(得分:2)
您可以使用UNWIND
从日期路径获取节点,并MATCH
将其添加到Listing
。
MATCH period=(a)-[:NEXT_DAY*]->(c)
WHERE a.date="2013-01-20" AND c.date="2013-01-24"
// UNWIND gets a collection of ndoes and transforms them to single/matchable nodes
UNWIND nodes(period) as nodes_in_period
MATCH (nodes_in_period)<-[:AVAILABLE]-(listing:Listing)
RETURN listing
对于红利问题:如果我做对了,你可以计算从AVAILABLE
到Listing
的{{1}}关系的数量,并将其与{{1}的数量进行比较您期间的节点。 Date
可能有所帮助:
Date