Hibernate Search не индексирует встроенные коллекции должным образом

В настоящее время я работаю над проектом, который включает использование Hibernate Search. В настоящее время проект использует чистый SQL для своих поисков, и мы хотели бы вместо этого использовать текстовый поиск (необходимость знать и правильно писать по буквам первое слово может раздражать).

Схема такова, что продукт может иметь несколько версий, а текущая версия содержит название продукта.

Public Class Product extends ProgEntity
{
   private List<ProductVersion> versions = new ArrayList<ProductVersion>();
   ...
}

Public Class ProductVersion extends ProgEntity
{
    String productName;
    ...
}

Мне нужно уметь искать товар по названию. Я смог проиндексировать ProductVersions по productName без особых проблем, однако индексация Product оказывается более серьезной проблемой.

После некоторых исследований это то, что у меня есть, однако, когда я обновляю продукт в БД, индекс не создается.

@Entity
@Indexed
Public Class Product extends ProgEntity
{
   @IndexedEmbedded
   private List<ProductVersion> versions = new ArrayList<ProductVersion>();
   ...
}

@Entity
@Embeddable
Public Class ProductVersion extends ProgEntity
{
    @Field
    String productName;
    ...
}

DocumentID является частью ProgEntity. Я должен быть уверен, что если я обновлю продукт или версию продукта, он будет проиндексирован должным образом, чего, похоже, сейчас не происходит.

Любые предложения о том, что я делаю неправильно?

2 ответа

У вас нет взаимосвязи (например, многие-к-одному, многие-к-одному) между Product и ProductVersion, отображаемыми в опубликованном вами коде. Эти отношения должны быть двунаправленными. Аннотируйте поле коллекции Product с помощью @IndexedEmbedded, а обратное поле на стороне ProductVersion - с помощью @ContainedIn, и все будет готово.

Использование @Entity и @Embeddable в ProductVersion кажется неправильным. Также отсутствуют некоторые аннотации JPA. Коллекция версий отображается как @ManyToOne или @ElementCollection. Вы проверили свою конфигурацию спящего режима и файлы журналов? Какой провайдер каталогов вы используете?

Другие вопросы по тегам