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. Вы проверили свою конфигурацию спящего режима и файлы журналов? Какой провайдер каталогов вы используете?