搜索节点

时间:2015-09-25 00:39:17

标签: neo4j cypher

我正在尝试为我的meetup应用程序创建一个使用Neo4j作为数据库的搜索功能。有没有办法搜索节点(主题,部门和标题,获取附加到他们的人)和节点的属性(名字,姓氏,用户名,生物)。

Person节点与Title节点(通过IS_TITLED)的关系以及与Department节点的关系(通过EMPLOYED_BY)以及与Topic节点的关系(通过INTEREST_OF或SKILL_OF)

此外,我想确保每个人的结果都是截然不同的,所以如果这个人输入一个人和一个部门的头衔并且获得了2个匹配,那么这个人只会返回一次。

2 个答案:

答案 0 :(得分:1)

您的问题非常广泛,但以下是一个示例查询:

  • 查找财务部门雇用的所有人员,并标题为“职员”。
  • 确保他们是与众不同的人。
  • 返回他们的名字,姓氏,用户名和生物。

MATCH (d:Department)<-[:EMPLOYED_BY]-(p:Person)-[:IS_TITLED]->(t:Title)
WHERE d.name = "Finance" AND t.name = "Clerk"
WITH DISTINCT p
RETURN p.fname AS firstname, p.lname AS lastname, p.username AS username, p.bio AS bio;

答案 1 :(得分:0)

实际上我并不是在寻找整个应用程序。我的最终解决方案是在我的节点添加,更新和删除时添加,更新和删除ElasticSearch中的文档。然后我使用ElasticSearch查找结果并返回节点ID的列表。然后我编写了我的Cypher查询,使用IN为返回的id提取信息以生成结果。它似乎工作得很好。由于我无法找到用于同步Neo4j和ElasticSearch的集成解决方案,因此我在应用程序中使用这两个库,并在节点生效时对ElasticSearch执行适当的操作。