Я пытаюсь интегрировать Hibernate Search в приложение. Сущности приложения могут иметь несколько свойств, которые хранятся на многоязычном языке. Это достигается путем разделения неязыковых и многоязычных свойств на отдельные объекты. Пример фрагмент этого раскола выглядит следующим образом (пропущено в спящем режиме аннотаций, как часть базы данных работает нормально):Hibernate-Search @IndexedEmbedded с HashMap, как включить набор ключей в индекс
@Indexed
public class Assignment {
@DocumentId
private UUID id;
@IndexedEmbedded
private Map<String, AssignmentI18n> i18n;
// Other properties
}
public class AssignmentI18n {
@DocumentId
@FieldBridge(impl = AssignmentI18nBridge.class)
private AssignmentI18nId id;
@Field
private String title;
@Field
private String description;
@Field
private String requirements;
public static class AssignmentI18nId {
private UUID assignmentId;
private String iso;
}
}
Теперь я хотел бы сделать эти данные для поиска, используя Hibernate Search, рассматривая его как единое целое в индекс. Способ настройки аннотаций происходит, однако все записи многоязычных полей хранятся в том же поле в индексе. Основном мой указательный структура выглядит следующим образом:
id
i18n.title
i18n.description
i18n.requirements
Поскольку все значения многоязычных данных индексируется в том же поле, я уже не могу различить, какой язык они принадлежат. Есть ли способ, чтобы сделать индекс выглядеть следующим образом ?:
id
i18n.nl.title
i18n.en.title
i18n.nl.description
i18n.en.description
i18n.nl.requirements
i18n.en.requirements
Основном Я хотел бы добавить ключевое значение HashMap с именем индекс поля. Я рассмотрел возможность рассмотрения карты как поля с пользовательским полем FieldBridge, но это не похоже на правильный подход.
Я предполагаю, что это FieldBridge. Я не думаю, что структура карты слишком сложна, хотя все значения будут иметь тип String, иначе нет причин для их участия в многоязычном объекте. Я предполагаю, что могу создать пользовательскую аннотацию, чтобы узнать, какие поля добавить в индекс. Что касается других вопросов, я в настоящее время делаю это один шаг за один раз, и мой первый шаг - создать подходящий индекс. На данный момент это нужно только для поиска по одному языку за раз. Такие параметры, как стебель и другие фильтры, должны быть изучены. –