如何使用hibernate lucene搜索从表中检索特定列?

时间:2016-11-08 04:57:25

标签: java hibernate lucene hibernate-search

我需要使用Hibernate Search查询检索特定列。我尝试了预测,但没有成功。请帮助我实现这一点,任何建议或建议将不胜感激。 这是我的疑问:

     FullTextSession fullTextSession = Search.getFullTextSession(session);
     QueryBuilder b = fullTextSession.getSearchFactory()
            .buildQueryBuilder().forEntity(Company.class).get();
        org.apache.lucene.search.Query luceneQuery =
            b.keyword()
                .onFields("company_name","city")
                .matching("search keyword here!")
                .createQuery();
        org.hibernate.Query fullTextQuery=fullTextSession.createFullTextQuery(luceneQuery).setProjection().setProperties("company_name");       
        List result = fullTextQuery.list();

1 个答案:

答案 0 :(得分:0)

您可以使用投影。 但在此之前,您必须使用store = Store.yes

存储该列值
@Field(store=Store.YES)
private String name;

在程序中,您可以使用投影

Session session = sessionFactory.openSession();

FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.createIndexer().startAndWait();

QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Employee.class).get();
org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword().onFields("name").matching(name).createQuery();
org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, Employee.class);
fullTextQuery.setProjection("name");

List list = fullTextQuery.list();