现在我用的是 hibernate search 做全文索引 索引字段是content
QueryParser queryParser = new QueryParser(Version.LUCENE_31, "content", new KeywordAnalyzer());
try {
Query query = queryParser.parse(keyword);
FullTextSession session = Search.getFullTextSession(this.getSession());
FullTextQuery fullTextQuery = session.createFullTextQuery(query, Job.class);
Criteria c = session.createCriteria(Job.class);
c.add(Restrictions.eq("cid", cid));
if(mode != 0){
c.add(Restrictions.eq("mode", mode));
}
if (btime != null && !btime.equals("") && etime != null && !etime.equals("")) {
c.add(Restrictions.gt("ctime", btime));
c.add(Restrictions.lt("ctime", etime));
}
c.setProjection(Projections.rowCount());
c.add(Restrictions.lt("ctime", lastCtime));
c.addOrder(Order.desc("ctime"));
fullTextQuery.setCriteriaQuery(c);
fullTextQuery.uniqueResult().toString();
return 0;
} catch (ParseException e) {
e.printStackTrace();
}
这样用生成的sql 为
select count(*) from job where id in (?,?,?) and cid=? ........
但是现在报错说返回的是多条数据
想要达到的结果是
hibernate search 先查询索引 然后根据索引 出来的id 再加上cid做过滤总数
fullTextQuery.getResultSize()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。