Hibernate Search не индексирует встроенные коллекции должным образом - PullRequest
3 голосов
/ 23 июня 2011

В настоящее время я работаю над проектом, который включает использование 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 ]

1 голос
/ 12 марта 2013

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

0 голосов
/ 05 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...