1
我有一個Neo4j數據庫,包含用戶,內容和主題節點。我想計算給定用戶對特定主題消耗的內容的比例。在密碼查詢中的獨立匹配
MATCH (u:User)-[:CONSUMED]->(c:Content)<-[:CONTAINS]-(t:Topic)
WHERE ID(u) = 11158 AND ID(t) = 19853
MATCH (c1:Content)<-[:CONTAINS]-(z)
RETURN toFloat(COUNT(DISTINCT(c)))/toFloat(COUNT(DISTINCT(c1)))
有兩兩件事讓我最真的在這裏醜:
- 首先,是
COUNT(DISTINCT())
一個黑客以避開一個事實,即這兩個MATCH
查詢交叉聯接? - 浮法師很醜。
第二個是我可以住的東西,但第一個似乎效率低下;有沒有更好的方式來表達這個想法?
啊,對不起,這是我錯過的細節 - 如果他們在不同的時間使用它們,它們的確可以有多個消費鏈接。對不起,將修改帖子! – Tom
那麼你想清楚地數出它們 - 對嗎?否則你可能會陷入他們超過100%的情況。 –
正確,是的 - 從最簡單的術語來說,我需要一個查詢來說「讓我看看這個內容已被消費的比例」 – Tom