У меня есть сущность, которую я хочу проиндексировать с помощью поиска Hibernate, чтобы воспользоваться всеми функциями полнотекстового поиска.У сущности есть несколько полей, по которым мне нужно отфильтровать.Например:
@Field(index = Index.TOKENIZED, store = Store.NO)
@Lob
private String description;
@Field(index = Index.UN_TOKENIZED, store = Store.NO)
@Enumerated(EnumType.STRING)
@NotNull
private Type type;
Поле description
- это то, для чего я хочу использовать полный текстовый поиск.Поле Type
, с которым я просто хочу провести простое старое сравнение.Мне кажется немного неправильным, что Lucene должен иметь дело с прямым сопоставлением поверх полного текстового поиска, и я должен использовать что-то вроде CriteriaBuilder
для обработки дополнительной фильтрации.Однако я не могу найти способ объединить эти два параметра и прибегаю к использованию BooleanJunction
операторов в моем алгоритме поиска с must
, matching
и keyword
в полях, которые мне нужны для прямого соответствия.
Итак, мой вопрос, правильно ли я делаю или я должен использовать Lucene только для полнотекстового поиска и выполнять фильтрацию других атрибутов каким-либо другим способом?
Большое спасибо, Finbarr