Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4J Cypher:计算每个节点中有多少属性/属性与我的查询匹配_Neo4j_Cypher - Fatal编程技术网

Neo4J Cypher:计算每个节点中有多少属性/属性与我的查询匹配

Neo4J Cypher:计算每个节点中有多少属性/属性与我的查询匹配,neo4j,cypher,Neo4j,Cypher,例如,假设我的查询是: 匹配(u:用户)您居住的地点在“洛杉矶”或来自“迈阿密”或 u、 状态:'Single'或u。作业:'Artister'})返回u 如何更改查询,以便显示一列,计算与查询匹配的属性数 对于上面的查询,假设我返回了以下用户: > User1, Los Angeles, Miami, Single, Artist, (4 attributes matched query > so show a 4 in column) > > User2, Los

例如,假设我的查询是:

匹配(u:用户)您居住的地点在“洛杉矶”或来自“迈阿密”或 u、 状态:'Single'或u。作业:'Artister'})返回u

如何更改查询,以便显示一列,计算与查询匹配的属性数

对于上面的查询,假设我返回了以下用户:

> User1, Los Angeles, Miami, Single, Artist, (4 attributes matched query
> so show a 4 in column)
> 
> User2, Los Angeles, Miami, Married, Artist, (3 attributes matched
> query so display 3 in column)
> User3, Los Angeles, New York, Married, Dancer, (1 attributes matched
> query so display 1 in column)
我用这个来建立一个排名系统

我正试图得到这个:


如果你能展示如何处理人际关系,也可以作为奖励。谢谢。

假设您的图形建模为

现在,您可以将这些关系命名为合适的关系。我粘贴的图形模型的唯一目的是演示匹配策略,这就是为什么我没有适当地命名关系和添加节点标签

现在你能做的是

match (u:User)-[r]-(m) where m.name in ['LA','Miami','Single','Artist'] return u,count(m) as count

{假设上面的
m
其他节点(用户标记的节点除外)中有名称attrib}

假设图形建模为

现在,您可以将这些关系命名为合适的关系。我粘贴的图形模型的唯一目的是演示匹配策略,这就是为什么我没有适当地命名关系和添加节点标签

现在你能做的是

match (u:User)-[r]-(m) where m.name in ['LA','Miami','Single','Artist'] return u,count(m) as count

{假设上面的
m
其他节点(用户标记的节点除外)中有名称attrib}

假设图形建模为

现在,您可以将这些关系命名为合适的关系。我粘贴的图形模型的唯一目的是演示匹配策略,这就是为什么我没有适当地命名关系和添加节点标签

现在你能做的是

match (u:User)-[r]-(m) where m.name in ['LA','Miami','Single','Artist'] return u,count(m) as count

{假设上面的
m
其他节点(用户标记的节点除外)中有名称attrib}

假设图形建模为

现在,您可以将这些关系命名为合适的关系。我粘贴的图形模型的唯一目的是演示匹配策略,这就是为什么我没有适当地命名关系和添加节点标签

现在你能做的是

match (u:User)-[r]-(m) where m.name in ['LA','Miami','Single','Artist'] return u,count(m) as count

{假设上面的
m
其他节点(用户标记的节点除外)中有名称attrib}

您可以使用一组
CASE
语句:

MATCH (u:User)
WITH u.UserID AS User, CASE WHEN u.LivesIn = 'Los Angeles' THEN 1 ELSE 0 END AS c1,
                       CASE WHEN u.From = 'Miami' THEN 1 ELSE 0 END AS c2,
                       CASE WHEN u.Status = 'Single' THEN 1 ELSE 0 END AS c3,
                       CASE WHEN u.Job = 'Artist' THEN 1 ELSE 0 END AS c4
RETURN User, c1 + c2 + c3 + c4 AS Matching

您可以使用一组
CASE
语句:

MATCH (u:User)
WITH u.UserID AS User, CASE WHEN u.LivesIn = 'Los Angeles' THEN 1 ELSE 0 END AS c1,
                       CASE WHEN u.From = 'Miami' THEN 1 ELSE 0 END AS c2,
                       CASE WHEN u.Status = 'Single' THEN 1 ELSE 0 END AS c3,
                       CASE WHEN u.Job = 'Artist' THEN 1 ELSE 0 END AS c4
RETURN User, c1 + c2 + c3 + c4 AS Matching

您可以使用一组
CASE
语句:

MATCH (u:User)
WITH u.UserID AS User, CASE WHEN u.LivesIn = 'Los Angeles' THEN 1 ELSE 0 END AS c1,
                       CASE WHEN u.From = 'Miami' THEN 1 ELSE 0 END AS c2,
                       CASE WHEN u.Status = 'Single' THEN 1 ELSE 0 END AS c3,
                       CASE WHEN u.Job = 'Artist' THEN 1 ELSE 0 END AS c4
RETURN User, c1 + c2 + c3 + c4 AS Matching

您可以使用一组
CASE
语句:

MATCH (u:User)
WITH u.UserID AS User, CASE WHEN u.LivesIn = 'Los Angeles' THEN 1 ELSE 0 END AS c1,
                       CASE WHEN u.From = 'Miami' THEN 1 ELSE 0 END AS c2,
                       CASE WHEN u.Status = 'Single' THEN 1 ELSE 0 END AS c3,
                       CASE WHEN u.Job = 'Artist' THEN 1 ELSE 0 END AS c4
RETURN User, c1 + c2 + c3 + c4 AS Matching


如果您将其建模为单独的节点而不是attribs\,则会更好。像单身/已婚可以是2个节点,纽约/洛杉矶可以是2个其他节点。所有这些都是通过关系联系起来的。然后你可以很容易地做你想做的事情。是的,听起来更好,但我不知道如何使用或使用你提到的关系编写相同的查询。但是如果我使用关系,我将如何计算匹配的属性?您可以创建用户节点喜欢的单独节点,而不是将其作为节点属性保存。查看我的解决方案以获得更清晰的理解。如果您将其建模为单独的节点而不是attribs\,则会更好。像单身/已婚可以是2个节点,纽约/洛杉矶可以是2个其他节点。所有这些都是通过关系联系起来的。然后你可以很容易地做你想做的事情。是的,听起来更好,但我不知道如何使用或使用你提到的关系编写相同的查询。但是如果我使用关系,我将如何计算匹配的属性?您可以创建用户节点喜欢的单独节点,而不是将其作为节点属性保存。查看我的解决方案以获得更清晰的理解。如果您将其建模为单独的节点而不是attribs\,则会更好。像单身/已婚可以是2个节点,纽约/洛杉矶可以是2个其他节点。所有这些都是通过关系联系起来的。然后你可以很容易地做你想做的事情。是的,听起来更好,但我不知道如何使用或使用你提到的关系编写相同的查询。但是如果我使用关系,我将如何计算匹配的属性?您可以创建用户节点喜欢的单独节点,而不是将其作为节点属性保存。查看我的解决方案以获得更清晰的理解。如果您将其建模为单独的节点而不是attribs\,则会更好。像单身/已婚可以是2个节点,纽约/洛杉矶可以是2个其他节点。所有这些都是通过关系联系起来的。然后你可以很容易地做你想做的事情。是的,听起来更好,但我不知道如何使用或使用你提到的关系编写相同的查询。但是如果我使用关系,我将如何计算匹配的属性?您可以创建用户节点喜欢的单独节点,而不是将其作为节点属性保存。查看我的解决方案以获得更清晰的理解。这是一个非常聪明的方法!!美好的这就是我最后使用的,并且将它与coalesce(对于true/false)和reduce结合起来,将总和相加。谢谢。这是一个非常聪明的方法!!美好的这就是我最后使用的,并且将它与coalesce(对于true/false)和reduce结合起来,将总和相加。谢谢。这是一个非常聪明的方法!!美好的这就是我最后使用的,并且将它与coalesce(对于true/false)和reduce结合起来,将总和相加。谢谢。这是一个非常聪明的方法!!美好的这就是我最后使用的,并且将它与coalesce(对于true/false)和reduce结合起来,将总和相加。谢谢。谢谢你的图表和回复。我最终使用了Nicole的解决方案,但正如您所提到的,我将更多地利用neo4j关系。此外,我建议您阅读neo4j用于存储属性的底层数据结构,以及如何优化数据检索。。因为这样你就会明白我为什么建议使用关系了。谢谢你的图表和回复。我最终使用了Nicole的解决方案,但正如您所提到的,我将更多地利用neo4j关系。此外,我建议您阅读基础数据