我试图弄清楚如何在Neo4j中建模这个场景。
我有一个"产品"具有name属性的节点。问题是name属性可以跨不同语言的几个变体,它们都应该引用同一个节点。
我希望能够搜索名称及其所有变体以引用一个节点。
.eg。
Name: Banana
Variation: Banano
Variation: Banane
etc.
节点:
Food {id: 1, name: "Banana"}
翻译{id:1000,姓名:" Banane",语言:"法语"}
关系
(:Food)<-[:SIMILAR_TO]-(:translation)
我看起来效率更高,可以轻松使用快速搜索索引。
有关如何最好地建模此方案的任何建议?
答案 0 :(得分:0)
以下是您可以执行的操作示例:
(:Product {id: 1})-[:HAS_NAME]->(:Name {name:"Banana", lang:"en"})
" -[:HAS_NAME]->(:Name {name:"Banane", lang:"fr"})
" -[:HAS_NAME]->(:Name {name:"Banano", lang:"it"})
(:Product {id: 1})-[:SIMILAR_TO]->(:Food)
您可以在:Product id
上创建唯一性约束,在:Name name
上创建索引。
通过这种方式,您可以轻松找到特定产品的所有本地化名称,并轻松找到具有特定名称的所有产品。