Я работаю с Hibernate Search в первый раз, и у меня есть некоторые сомнения. Я ценю, если вы можете сказать мне несколько предложений.Hibernate Поиск по предложению о критериях
У меня есть следующий объект:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Field(name = FIELD_LASTNAME, analyze = Analyze.YES, index = Index.YES)
private String name;
private int age;
.....
Таким образом, для пользователей поиска, которые их возраст 25 я следующее:
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(User.class).get();
Query luceneQuery = qb.keyword().onFields("name").matching("Geor").createQuery();
Query jpaQuery = fullTextEntityManager
.createFullTextQuery(luceneQuery, User.class)
.setCriteriaQuery(fullTextEntityManager
.createCriteria(User.class)
.add(Restrictions.eq("user.age", 25)));
Мой вопрос являются:
- ли Правильно ли использовать критерии для фильтрации информации?/Когда полезно использовать его?
- Должен ли я индексировать свойство «возраст» с помощью @Field?
- Должен ли я индексировать все свойства объекта, которые необходимо использовать для фильтрации?
- Как насчет производительности, используя индексированные значения или нет?
- Как выбрать, какие значения должны быть проиндексированы lucene?
Заранее спасибо
Большое спасибо за ваш ответ. Но почему вы говорите, что «Hibernate Search Lucene не следует смешивать с запросами на запросы Hibernate ORM Criteria. Это не поддерживается».? В моем примере я использую критерии, и он работает. Я получаю результаты. – devops85
Не поддерживается, и вы можете получить неправильные результаты. Проверьте документацию Hibernate Search, содержащую предупреждение об этом. – Hardy
О, хорошо. Thankss! – devops85