在Neo4j中存储多语言属性值的最佳实践是什么?

21

我正在将一些节点存储在Neo4j图形数据库中,每个节点都具有可以本地化为不同语言的属性值。是否有存储多语言属性值的最佳实践?

1个回答

18

有几种建模方式。哪一种最好取决于您的用例和您想要使用的国际化属性的方式。我假设下面草绘了一些示例,假设n是一个应该在各种语言中翻译其productNamecolor属性的节点。以下将使用类似Cypher的符号。

1)将所有翻译与节点一起存储。

CREATE (n {
productName:'default', color:'default',
productName_en:'engl.prod.name', color_en:'red',
productName_fr:'fr.prod.name', color_fr:'rouge',
})

您可以使用命名规则并使用 <propertyName>_<lang> 作为国际化变量的变体名称。这种方法过于简单,不够优美。

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'})

所以你有一个额外的节点和一个额外的关系每种语言。在Neo4j 2.0中,您还可以使用标记指示语言来指示翻译节点。通过这样做,您可以轻松提取语言xyz中的所有文本列表。

3)与2)类似,但使用通用关系类型TRANSLATION并在其上设置表示语言的属性。

还有一些其他方法,例如理论上也可以使用数组属性。正如所说,没有万能药,它取决于您的用例和要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接