【问题标题】:Best practice for storing multi-language property values in Neo4j?在 Neo4j 中存储多语言属性值的最佳实践?
【发布时间】:2013-11-24 07:28:18
【问题描述】:

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

【问题讨论】:

    标签: internationalization neo4j


    【解决方案1】:

    有几种方法可以对此进行建模。哪一个是最好的,取决于您的用例以及您希望使用 i18n 化属性的方式。我在下面草绘了一些示例,假设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',
    })
    

    您应用命名约定并为 i18n 化的变体使用 <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'})
    

    因此,每种语言都有 1 个额外的节点和 1 个额外的 rel。在 Neo4j 2.0 中,您可能还使用指示语言的标签来指示翻译节点。通过这种方式,您可以轻松提取 xyz 语言中所有文本的列表。

    3) 与 2) 类似,但使用通用关系类型 TRANSLATION,其上带有指示语言的属性。

    还有更多的方法,例如理论上你也可以使用数组属性。 如前所述,没有灵丹妙药,这取决于您的用例和要求。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多