首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >neo4j -多个可选匹配

neo4j -多个可选匹配
EN

Stack Overflow用户
提问于 2014-07-25 13:14:50
回答 1查看 127关注 0票数 1

我有以下neo4j数据库:http://console.neo4j.org/?id=gkkmha

然后运行以下查询:

代码语言:javascript
复制
MATCH (person:Person)-[:plays]->(instrument:Instrument {name: 'Drums'})
OPTIONAL MATCH (band:Band { name: 'bandname' })-[:genre]->(genre:Genre)<-[:likes]-(person)
OPTIONAL MATCH (band)-[:influenced]->(influence:Influence)<-[:influenced]-(person)
RETURN person.name, COLLECT(genre.name) as matched_genres, COLLECT (influence.name) as matched_influences, (count(genre)/4.0) as score
ORDER BY score DESC

我希望能够找到音乐家谁演奏指定的乐器,但也有类似的体裁匹配和影响的乐队。到目前为止,我已经完成了匹配类型的工作,并返回了这些类型的列表,但我不能让它对影响做同样的事情。我希望它返回一个匹配的影响列表以及。

理想情况下,它还能得到乐队与之相关的各种类型和影响的总数(尽管这只是一个很好的选择)。

当前产出:

代码语言:javascript
复制
+-----------------------------------------------------------------+
| person.name    | matched_genres    | matched_influences | score |
+-----------------------------------------------------------------+
| "Robert Smith" | ["Soul","Motown"] | []                 | 0.5   |
| "Alex Smith"   | ["Soul"]          | []                 | 0.25  |
| "Mr Drummer"   | []                | []                 | 0.0   |
+-----------------------------------------------------------------+
3 rows
54 ms

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-25 13:44:45

我相信你有一个错误,而不是:influenced,尝试:Influenced

代码语言:javascript
复制
MATCH (person:Person)-[:plays]->(instrument:Instrument { name: 'Drums' })
OPTIONAL
MATCH (band:Band { name: 'bandname' })-[:genre]->(genre:Genre)<-[:likes]-(person)
OPTIONAL
MATCH (band)-[:Influenced]->(influence:Influence)<-[:Influenced]-(person)
RETURN person.name, COLLECT(genre.name) AS matched_genres, COLLECT(influence.name) AS matched_influences,(count(genre)/4.0) AS score
ORDER BY score DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24956626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档