У меня есть база данных вещей, каждая из которых может иметь несколько имен на разных языках.В настоящее время это нормализуется к вещь с множеством имен схема:
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
в схеме, в котором я могу хранить имена, язык которых будет автоматически определен и соответствующим образом проиндексирован?Или другие способы, которыми средства обнаружения языка могли бы облегчить мою жизнь здесь?