我有一个事物数据库,每个事物都可以有多个不同语言的名称。这目前被规范化为一个事物有许多名称的模式:
things
------
id
...
names
-----
id
thing_id
language
name
我正在使用 Solr 对其进行索引,并试图找出将其非规范化为 Lucene 模式的最佳方法。这个工作正常:
<fields>
<field name="id" type="uuid" indexed="true" stored="true" required="true" />
...
<field name="name_eng" type="text_eng" indexed="true" stored="true" />
<field name="name_jpn" type="text_cjk" indexed="true" stored="true" />
<field name="name_kor" type="text_cjk" indexed="true" stored="true" />
</fields>
问题是我需要为每种支持的语言单独指定一个字段和字段类型,可能有很多。由于我还使用 SQL DataImportHandler,这意味着我必须复制大量代码来指定 SQL 查询以将这些查询从数据库导入到此模式中。此外,language
名称字段并不总是正确的,因为它基于用户输入。
我正在查看 Solr 提供的语言检测功能,看起来非常好。但他们似乎只对整个文档起作用,在这种情况下,我猜这不会有太大帮助。有没有办法在架构中指定一个multiValued
字段,我可以在其中存储名称,其语言将被自动检测并相应地编制索引?或者语言检测设施可以让我在这里的生活更轻松的其他方式?