我正在尝试为我的meetup应用程序创建一个使用Neo4j作为数据库的搜索功能。有没有办法搜索节点(主题,部门和标题,获取附加到他们的人)和节点的属性(名字,姓氏,用户名,生物)。
Person节点与Title节点(通过IS_TITLED)的关系以及与Department节点的关系(通过EMPLOYED_BY)以及与Topic节点的关系(通过INTEREST_OF或SKILL_OF)
此外,我想确保每个人的结果都是截然不同的,所以如果这个人输入一个人和一个部门的头衔并且获得了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执行适当的操作。