solr的多条件组合查询和solr的范围查询
来源:互联网 发布:列宁格勒保卫战知乎 编辑:程序博客网 时间:2024/06/03 22:46
http://blog.csdn.net/millery22/article/details/49658981
存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引,此时在查询数据的时候可以通过solr查询,这样就大大的提高了查询的效率。但是以下这个问题困扰很多初学者。包括博主我自己,那就是solr的多条件组合查询和solr的范围查询,在研究多个博文和实际项目应用后发现,这个真的不是很难,只是很多博文写的不是很详细,很让人头疼。
问题分析:在多条件查询数据库时,我们用到将多个条件进行拼接,得到一个sql语句,然后执行sql语句到数据库中查询数据,在solr中也是一样,同样是拼接查询语句,然后到solr中查询数据,只是这里不叫sql语句罢了,思想是相通的。
假设现在我要根据价格区间、类型(家居物品,游戏点卡等)和颜色三个条件在solr中组合查询窗帘这个商品。
代码体现:
这里solr的配置和solr和spring的整合看我的上一篇博文“solr和spring的整合配置”,接下来我就直接上代码了。
- public class ProductSearchService {
- //通过spring注入HttpSolrServer对象
- @Autowired
- private HttpSolrServer httpSolrServer;
- /**
- *
- * @描述:根据商品类型、商品颜色、价格区间组合条件到solr中查询数据
- * @创建人:
- * @创建时间:2015年11月04日 上午10:49:19
- * @param productType 商品的类型
- * @param minPrice 价格区间底价
- * @param maxPrice 价格区间顶价
- * @param color 商品的颜色
- * @return 查询得到的所有商品列表
- * @throws SolrServerException
- */
- public List<Product> queryProduct(String productType,String color, Float minPrice, Float maxPrice) throws SolrServerException {
- // 创建查询对象
- SolrQuery solrQuery = new SolrQuery();
- // 创建组合条件串
- StringBuilder params = new StringBuilder("productType:" + productType);
- // 组合商品颜色条件
- if (color != null) {
- params.append(" AND color:" + color);
- }
- // 组合价格区间条件
- if (minPrice.intValue() != 0 || maxPrice != 0) {
- params.append(" AND spPrice:[" + minPrice + " TO "
- + maxPrice + "]");
- }
- solrQuery.setQuery(params.toString());
- // 执行查询并获取查询数据
- QueryResponse queryResponse = this.httpSolrServer.query(solrQuery);
- List<Product> products = queryResponse.getBeans(Product.class);
- return products;
- }
- }
说明:上面的代码片段其实关键的地方就是价格区间的代码,这个有时候在其他博文上看到,但是没有给出具体代码的体现比较抽象,这里我就直接写在代码上了。
0 0
- solr的多条件组合查询和solr的范围查询
- solr的多条件组合查询和solr的范围查询
- Solr的HBase多条件查询
- solr关于时间范围的查询
- 控制solr中查询条件的数量
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试【重要】
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- 基于Solr的HBase多条件查询测试
- solr的ExtendedDisMax查询
- solr的facet查询
- solr的facet查询
- solr multiValued的查询
- spring mvc @ResponseBody返回中文乱码解决
- 王爽《汇编语言》实验9详解
- hjr教程-PHP(三):PDO连接Mysql
- 题目1106:数字之和
- PHP中插件机制的一种实现方案
- solr的多条件组合查询和solr的范围查询
- Hibernate(基础一) Hibernate3的动态条件查询DetachedCriteria用法
- Android6.0权限组
- n个元素的所有子集(递归+非递归 +不去重)
- Imooc·Java高并发秒杀API(枚举与异常处理)
- R语言实战:机器学习与数据分析源代码2
- 异常Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- bootstrap-table 显示行号,分页有效
- Android中BindService方式使用的例子