2014-11-05 243 views
3

asking about Neo4j caches之後,沒有一個明確的解決方案,我一直在測試Neo4j作爲可能在生產中使用的數據庫。但是,我現在面臨着一個新的問題,即使用特定的標籤對屬性進行索引。Neo4j索引錯誤?

事情是,不知何故,如果我通過標籤和屬性(意外地具有相同的名稱)請求節點,Neo4j沒有獲得正確的數據。我截取了一些正在發生的事情的截圖,希望能夠幫助理解我推斷出這可能是一個錯誤的方式。這些是由兩個不同的標籤發生的兩個例子:

enter image description here

我有標籤一個和標籤,和屬性一個b。如果從底部讀到頂部,你可以看到,我以下步驟:

  1. 我請求與屬性一個(無標籤)節點< - 工程
  2. 我請求節點與標籤一個和屬性一個 < - 不起作用(使用索引)
  3. 我請求節點與標籤和屬性b < - 工程
  4. 我請求與標籤節點和屬性一個 < - 工程
  5. 我請求節點與標籤和屬性b < - 工程(利用指數)

我還在我的請求中添加了額外的列(它們沒有影響),以檢查兩列的值是否相同,並檢查標籤。

我只有在使用與同名的標籤對該屬性編制索引時纔會遇到此問題。這意味着,標籤A和屬性a。但是,標籤B和屬性b沒有發生這種情況。至少現在不是這樣,因爲與其他標籤重複相同的場景屬性名稱(遵循規則A ... a)導致了同樣的問題。

我不需要說外界沒有影響,所以我完全控制了數據庫中發生的事情。

編輯:

enter image description here

+0

你正在運行什麼版本?你可以在你的數據上運行一致性檢查器:http://www.markhneedham.com/blog/2014/01/22/neo4j-backup-store-copy-and-consistency-check/ – 2014-11-16 10:15:10

回答

1

你的#1並沒有真正的 「工作」,因爲你應該得到(至少)2行(每個標籤)。

在您的RETURN語句中,您應該包含id(n),以便您可以查看哪些節點正在返回。目前尚不清楚。

EDITED

OK,與上市的ID,它是現在很清楚,我們正在談論與多個標籤的單個節點。所以,這看起來像一個奇怪的錯誤。如果你在最新版本中看到這個,你應該考慮在github.com/neo4j/neo4j/issues上爲此創建一個問題。

+0

如果你檢查文檔,函數'labels()'將集合返回爲列http://neo4j.com/docs/stable/query-functions-collection.html#functions-labels。關於節點的ID,我正在編輯添加新屏幕截圖的問題。您在過去兩段中提出的其他建議也是我的第一個難題,因此我添加了兩個額外的列來檢查列的平等性以及標籤的名稱 – 2014-11-05 18:42:35

+2

好吧,列出的ID現在是清楚地表明我們正在討論具有多個標籤的單個節點。所以,這看起來像一個奇怪的錯誤。如果你在最新版本中看到這個,你應該考慮在https://github.com/neo4j/neo4j/issues上爲此創建一個問題。 (我編輯了我的答案以包含此文本) – cybersam 2014-11-05 18:53:43