[英]Sorting neo4j by relationship if relationship exist
我目前正在開發一個社交應用,該應用需要按關鍵字過濾用戶。 我正在使用neo4j數據庫。
我已經具有該功能,但首先要按關系進行過濾存在問題。
例如,用戶A跟隨用戶F。搜索結果應首先顯示F(如果存在),然后顯示其他用戶。
結果按用戶名的字母順序排序,但是現在我需要先按關系排序,然后再按用戶名排序。
我當前的查詢:按用戶名關鍵字獲取所有用戶,按用戶名排序。
MATCH (u:User {userId:{userId}}), (su:User)
WHERE NOT (u)<-[:BLOCK]-(su)
AND su.username =~ {keyword}
RETURN SU
ORDER BY su.username
我的參考: https : //neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/
已經找到解決方案:
MATCH (u:User {userName:{userId}}), (su:User {userStatus:1})
WHERE NOT (u)<-[:BLOCK]-(su)
AND su.userName =~ {keyword}
OR su.displayName =~ {keyword}
RETURN
CASE WHEN EXISTS((u)-[:FOLLOW]-(su)) THEN true
END AS isFollow, su
ORDER BY isFollow, LOWER(su.userName) ASC, LOWER(su.displayName) ASC
該查詢將按關系,用戶名和顯示名稱排序。 如果有人有更好的答案和更好的性能,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.