Я пытаюсь добавить полнотекстовый поиск к объекту, используя hibernate-search. В нашей схеме используется мультитенантность на основе дискриминатора, где каждый арендатор - это park
с идентификатором. Модель выглядит так:
@Entity
@Indexed
public class ProductModel {
@Field
// park is the tenant
private Long parkId;
@Field(index = Index.YES, analyze = Analyze.YES)
@Analyzer(definition = "customanalyzer")
private String name;
@Field(index = Index.YES, analyze = Analyze.YES)
@Analyzer(definition = "customanalyzer")
private String description;
}
При выполнении полнотекстового поиска я всегда буду фильтровать на основе parkId
. Имеет ли смысл аннотировать parkId
с помощью @Field
, а затем добавить этот фильтр в запрос lucene следующим образом:
org.apache.lucene.search.Query luceneQuery = qb
.bool()
.must(qb.keyword().onFields("parkId").matching(parkIdFilter))
// any aditional queries, like on name, description
.must(qb.keyword().onFields(fields).matching(textQuery).createQuery())
.createQuery();
Или есть ли лучший способ обработки многопользовательского режима с использованием поиска в режиме гибернации со столбцами дискриминатора? Я видел пример , упомянутый в документах , но не знаю, как применить это к моему конкретному случаю использования.