2017-08-30 67 views
0

我想創建具有匹配的哈希數的文件之間的差異計數。被匹配的節點標籤是QueryBlock和RegisterBlock。如何爲具有匹配屬性的Neo4j節點創建差異分數?

我想建立QueryBlock和RegisterBlock節點的散列總數以及匹配散列的數量。然後減去從總註冊哈希值匹配哈希值的數量給予

TotalRegisterHashes TotalQueryHashes TotalMatchingHashes Difference 
1400    400    400     1000  

我運行此查詢的區別:

//Match QueryFiles to RegisterFiles using Block Hash Matches 
MATCH (m:QueryBlock),(p:RegisterBlock) 
WHERE m.qBlockHash = p.rBlockHash 
RETURN 
    COUNT(p) AS TotalRegisterHashes, 
    COUNT(m) AS TotalQueryHashes, 
    COUNT(*) AS TotalMatchingHashes, 
    abs((COUNT(p) - COUNT(*))) AS Difference 

和響應:

TotalRegisterHashes TotalQueryHashes TotalMatchingHashes  Difference 
793     793     793      0 

TotalMatchingHashes是正確但其他人不是。請你能告訴我我哪裏出錯了。

回答

0

當您運行count()功能,你正在運行後,加以過濾已經發生了,所以沒有辦法,那將讓您總計爲節點後再過濾。你應該先計算總數。獲取標籤中所有節點的數量是一個優化的操作,使用預先計算的總數而不是實際上必須對db中的節點進行計數。在得到給定標籤的總數後,對查詢的其餘部分進行匹配哈希和差異。

//Match QueryFiles to RegisterFiles using Block Hash Matches 
MATCH (m:QueryBlock) 
WITH COUNT(m) AS TotalQueryHashes 
MATCH (p:RegisterBlock) 
WITH TotalQueryHashes, COUNT(p) AS TotalRegisterHashes 
MATCH (m:QueryBlock),(p:RegisterBlock) 
WHERE m.qBlockHash = p.rBlockHash 
WITH TotalRegisterHashes, TotalQueryHashes, COUNT(*) AS TotalMatchingHashes 
RETURN TotalRegisterHashes, 
     TotalQueryHashes, 
     abs(TotalRegisterHashes - TotalMatchingHashes) AS Difference 
+0

如何顯示帶有5位小數的結果數字? –

+0

這需要[APOC程序](https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_number_format_conversions)。 – InverseFalcon

相關問題