【发布时间】:2014-02-10 05:57:48
【问题描述】:
我是 Lucene 新手,我正在休眠搜索员工类的两个字段,字段是 emp_name 和 emp_address,但使用此代码
Session session = HibernateUtil.getSessionFactory().openSession();
FullTextSession fullTextSession = Search.getFullTextSession(session);
SearchFactory searchFactory = fullTextSession.getSearchFactory();
String testString = "\"karthick\" AND \"tn\"";
//String testString = '+'+"karthick AND tn";
System.out.println(testString);
String[] fields={"emp_name","emp_address"};
/* Creating the Lucene Query */
FullTextSession fSession = Search.getFullTextSession(session);
fSession.beginTransaction();
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
QueryBuilder mythQB = searchFactory.buildQueryBuilder().forEntity( EmpVo.class ).get();
Query luceneQuery = mythQB.keyword().onFields("emp_name","emp_address").matching(testString).createQuery();
org.hibernate.Query fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery );
List<EmpVo> result = fullTextQuery.list();
for (EmpVo employee : result) {
System.out.println(employee.getEmp_name()+"------"+employee.getEmp_telno()+"------"+employee.getEmp_address());
}
我只需要得到employee name karthick and employee address tn 的结果,但是
对我来说,我得到了这样的结果
karthick------137594------tn
guna------134679------tn
chandra------246810------tn
【问题讨论】: