2015-09-25 209 views
0

我正在嘗試爲使用Neo4j作爲數據庫的Meetup應用程序創建搜索功能。是否有一種方法可以搜索節點(主題,部門和標題,獲取與它們相關的人員)和節點屬性(名,姓,用戶名,生物)。搜索節點和節點的屬性

的人節點必須(通過IS_TITLED)的目標節點的關係和(通過EMPLOYED_BY)到部門節點的關係,關係到主題節點(通過INTEREST_OF或SKILL_OF)

此外,我想,以確保每個人的結果都是不同的,所以如果這個人放入一個人和一個部門的頭銜並且得到2個匹配,那麼這個人只返回一次。

回答

0

其實我不是在尋找一個完整的應用程序。我的最終解決方案是在添加,更新和刪除節點時在ElasticSearch中添加,更新和刪除文檔。然後,我使用ElasticSearch查找結果並返回節點ID的列表。然後我編寫了我的Cypher查詢來使用IN獲取返回的ID來產生結果。它似乎完美地工作。由於我找不到同步Neo4j和ElasticSearch的集成解決方案,因此我在應用程序中使用了這兩個庫,並在節點生效時對ElasticSearch執行相應的操作。

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; 
+0

對不起,其廣泛。基本上我需要一個搜索來拆分人們在搜索欄中放置的內容,並搜索多個節點和節點屬性並返回結果。 –

+0

這基本上是要求整個應用程序,這對於StackOverflow問題確實太廣泛了。 – cybersam