我不能完全告訴我們,如果這是一個壞的問題,但我認爲它有一個明確的答案......標籤,屬性或節點? Cypher支架/ Neo4j的
我在我的構建首先圖形數據庫工作。它將保存對內容的引用的節點。這些節點將連接到術語節點。每個術語節點可以是七種類型之一(人員,組織,術語等)。
什麼是最好的方式來實現數據庫中的術語類型,因爲它涉及到查詢速度?用戶將根據條款搜索內容,其想法是讓他們根據其類型過濾條款。
作爲一個屬性似乎沒有問題,因爲它需要在查詢期間訪問每個術語的JSON對象。
(contentNode:content)-[:TAGGED_WITH]-(termNode:term {type: {"people":false,"organizations":false,"physicalObjects":true,"concepts":true,...}}
標籤直觀意義,我作爲不同類型的真的只是標註術語節點更具體。每個術語節點可以具有標籤「術語」以及相關類型。我對此有些困惑,但似乎標籤不能用作密碼查詢中的動態屬性,因爲它阻止了查詢被緩存/正確索引。
(contentNode:content)-[:TAGGED_WITH]-(termNode:term:physicalObject:jargon:...)
我能想到的最後一個選項將有一個節點對每個術語「類型」和項連接到相關類型的節點。現在這看起來像是最好的選擇(儘管是最詳細的)。
(contentNode:content)-[:TAGGED_WITH]-(termNode:term)-[:IS_TYPE]-(typeNode:termType {name:jargon}), (termNode:term)-[:IS_TYPE]-(typeNode:termType {name:physical object}), (termNode:term)-[:IS_TYPE]-(typeNode:termType {name: ...})
任何有更多經驗/知識的人都可以參與嗎?非常感謝。
我可能會使用它的標籤,他們被添加到替換類型屬性以及類別節點。 你是對的,你不能動態添加它們,但也許因爲你只有7種類型可以在客戶端預建查詢,並選擇它們。我認爲標籤最容易閱讀和使用,您也可以將它們用於Neo4j瀏覽器中的可視化錨定。 –
預構造查詢的唯一問題是這些類型意味着要與另一個組合使用(我希望用戶選擇返回的術語類型)。 81個查詢(我已經添加了兩個類型)似乎很多預寫。我絕對同意,語法雖然會更清晰。 – bornytm