1.使用
Hibernate Session
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
QueryBuilder qb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Book.class).get();
org.apache.lucene.search.Query query = qb.keyword().onFields("title", "subtitle", "authors.name").matching("violet").createQuery();
org.hibernate.Query hibQuery =fullTextSession.createFullTextQuery(query, Book.class);
List result = hibQuery.list();
tx.commit();
session.close();
2.使用JPA
EntityManager em = entityManagerFactory.createEntityManager();
FullTextEntityManager fullTextEntityManager =org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
em.getTransaction().begin();
QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Book.class).get();
org.apache.lucene.search.Query query = qb.keyword().onFields("title", "subtitle", "authors.name").matching("violet").createQuery();
javax.persistence.Query persistenceQuery =fullTextEntityManager.createFullTextQuery(query, Book.class);
List result = persistenceQuery.getResultList();
em.getTransaction().commit();
em.close();
3.添加索引
把原有的数据添加索引
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<Book> books = session.createQuery("from Book").list();
for(Book book:books)
{
fullTextSession.index(book);
}
tx.commit();
session.close();