hibernate search -- 多条件查询
来源:互联网 发布:linux运维的基础知识 编辑:程序博客网 时间:2024/05/22 13:53
hibernate search可以通过多组合条件来实现多条件查询,这里简单介绍一下多条件查询的一个实践。
如果只是单个条件查询,那么这个查询就可以很简单
luceneQuery = queryBuilder.keyword().onFields("title", "content").matching(query.getKeyword()).createQuery()
如果是多条件并查询,那么就需要使用到Must Join,如果是多条件或查询,就需要使用should Join,这里举个Must Join的例子
//must trueMustJunction term = queryBuilder.bool().must(queryBuilder.keyword() .onFields("title", "content") .matching(query.getKeyword()).createQuery());//must false term.must(queryBuilder.keyword() .onField("status") .matching(query.getExcludeStatus()).createQuery()).not();
完整例子:
private FullTextQuery findByKeywordQuery(TopicQuery query) { FullTextSession fullTextSession = Search .getFullTextSession(getSession()); QueryBuilder queryBuilder = fullTextSession.getSearchFactory() .buildQueryBuilder().forEntity(Topic.class).get(); org.apache.lucene.search.Query luceneQuery = null; if (null == query.getStatus() && null == query.getUsername() && null == query.getExcludeStatus()) { luceneQuery = queryBuilder.keyword()// .wildcard() .onFields("title", "content").matching(query.getKeyword()) // .matching("*" + query.getKeyword() + "*") .createQuery(); if(LOG.isDebugEnabled()){ LOG.debug("create clean keyword search query: " + luceneQuery.toString()); } } else { MustJunction term = queryBuilder.bool().must(queryBuilder.keyword() .onFields("title", "content") .matching(query.getKeyword()).createQuery()); if(null != query.getStatus()){ term.must(queryBuilder.keyword() // .wildcard() .onField("status") .matching(query.getStatus()).createQuery()); } if(null != query.getExcludeStatus()){ term.must(queryBuilder.keyword() .onField("status") .matching(query.getExcludeStatus()).createQuery()).not(); } if(null != query.getUsername()){ term.must(queryBuilder.keyword() // .wildcard() .onField("owner.username") .ignoreFieldBridge() .matching(query.getUsername()).createQuery()); } luceneQuery =term.createQuery(); if(LOG.isDebugEnabled()){ LOG.debug("create complicated keyword search query: " + luceneQuery.toString()); } } // BooleanQuery FullTextQuery hibernateQuery = fullTextSession.createFullTextQuery( luceneQuery, Topic.class); return hibernateQuery; }
0 0
- hibernate search -- 多条件查询
- elastic search 多条件查询
- hibernate多条件动态查询
- Hibernate多条件查询操作
- Hibernate一对多条件查询
- hibernate 3.0 多条件查询方法
- Hibernate多条件查询方法收录
- hibernate 多条件查询方法 收录
- Hibernate多条件查询方法收录
- Hibernate通用多条件不定参数查询
- Hibernate多条件查询方法收录
- hibernate 多条件与查询:Restrictions
- Hibernate多条件模糊分页查询
- hibernate的多条件动态查询
- Hibernate设置多个查询条件
- Hibernate多条件查询,HQL拼接
- Hibernate 中文条件查询
- Hibernate条件查询
- 重写和重载
- SSH总结之框架分析
- 在UBUNTU 10.04下安装GTK 2.20.1。
- Java文件读写方式——以字符串的方式读写
- 学习笔记 - 包装类的效率测试
- hibernate search -- 多条件查询
- 查找_二分查找
- html5+css5使用小技巧
- ScrollView遇上ListView
- JAVA 方法的重写和方法的重载
- ocp-v13-048
- 2015-09-28
- 【0】结对编程与驾驶
- gem5运行Multiprogrammed workloads的方法