Sta*_*ley 15 internationalization neo4j
我在Neo4j图数据库中存储了一些节点,每个节点都有可以本地化为各种语言的属性值.是否存在存储多语言属性值的最佳实践?
Ste*_*ter 15
有几种方法可以对此进行建模.哪一个是最好的,取决于您的用例以及您希望使用i18n-ized属性的方式.我正在草拟下面的一些例子,假设n是一个节点应该有它productName和color属性翻译成各种语言.下面将使用类似Cypher的表示法.
1)存储节点的所有翻译.
CREATE (n {
productName:'default', color:'default',
productName_en:'engl.prod.name', color_en:'red',
productName_fr:'fr.prod.name', color_fr:'rouge',
})
Run Code Online (Sandbox Code Playgroud)
您应用命名约定并<propertyName>_<lang>用于i18n化的变体.这种方法很简单,并不是真正的图形.
2)每个语言和实体都有一个子节点,按关系类型表示语言:
CREATE (n {productName:'default', color:'default'}),
(n)-[:TRANSLATION_EN]->({productName: 'engl.prod.name', color:'red'}),
(n)-[:TRANSLATION_FR]->({productName: 'fr.prod.name', color:'rouge'})
Run Code Online (Sandbox Code Playgroud)
因此,每个语言有1个额外的节点和1个额外的rel.在Neo4j 2.0中,您可以另外指示具有指示语言的标签的转换节点.通过这个,您可以轻松地提取语言xyz中的所有文本的列表.
3)就像2)但使用通用关系类型TRANSLATION,其上有一个表示语言的属性.
还有几种方法,例如理论上你也可以使用数组属性.如上所述,没有银弹,这取决于您的使用案例和要求.
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |