solr的多条件组合查询和solr的范围查询

版权声明:本文为博主原创文章,供大家参考,但不要抄袭哦!

存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引,此时在查询数据的时候可以通过solr查询,这样就大大的提高了查询的效率。但是以下这个问题困扰很多初学者。包括博主我自己,那就是solr的多条件组合查询和solr的范围查询,在研究多个博文和实际项目应用后发现,这个真的不是很难,只是很多博文写的不是很详细,很让人头疼。

问题分析:在多条件查询数据库时,我们用到将多个条件进行拼接,得到一个sql语句,然后执行sql语句到数据库中查询数据,在solr中也是一样,同样是拼接查询语句,然后到solr中查询数据,只是这里不叫sql语句罢了,思想是相通的。

假设现在我要根据价格区间、类型(家居物品,游戏点卡等)和颜色三个条件在solr中组合查询窗帘这个商品。

代码体现:

这里solr的配置和solr和spring的整合看我的上一篇博文“solr和spring的整合配置”,接下来我就直接上代码了。

  1. public class ProductSearchService {
  2. //通过spring注入HttpSolrServer对象
  3. @Autowired
  4. private HttpSolrServer httpSolrServer;
  5. /**
  6. *
  7. * @描述:根据商品类型、商品颜色、价格区间组合条件到solr中查询数据
  8. * @创建人:
  9. * @创建时间:2015年11月04日 上午10:49:19
  10. * @param productType 商品的类型
  11. * @param minPrice 价格区间底价
  12. * @param maxPrice 价格区间顶价
  13. * @param color 商品的颜色
  14. * @return 查询得到的所有商品列表
  15. * @throws SolrServerException
  16. */
  17. public List<Product> queryProduct(String productType,String color, Float minPrice, Float maxPrice) throws SolrServerException {
  18. // 创建查询对象
  19. SolrQuery solrQuery = new SolrQuery();
  20. // 创建组合条件串
  21. StringBuilder params = new StringBuilder("productType:" + productType);
  22. // 组合商品颜色条件
  23. if (color != null) {
  24. params.append(" AND color:" + color);
  25. }
  26. // 组合价格区间条件
  27. if (minPrice.intValue() != 0 || maxPrice != 0) {
  28. params.append(" AND spPrice:[" + minPrice + " TO "
  29. + maxPrice + "]");
  30. }
  31. solrQuery.setQuery(params.toString());
  32. // 执行查询并获取查询数据
  33. QueryResponse queryResponse = this.httpSolrServer.query(solrQuery);
  34. List<Product> products = queryResponse.getBeans(Product.class);
  35. return products;
  36. }
  37. }

说明:上面的代码片段其实关键的地方就是价格区间的代码,这个有时候在其他博文上看到,但是没有给出具体代码的体现比较抽象,这里我就直接写在代码上了。

转载于:https://www.cnblogs.com/Lxiaojiang/p/6442071.html

solr的多条件组合查询和solr的范围查询【转】相关推荐

  1. solr的多条件组合查询

    今天,再工作中遇到了solr的多条件组合查询,于是在网上查到一些博客--多条件查询,这篇写的不错,但是我也想把我自己的记录下来.话不多说,直接放代码.注意:,在接收的参数由于都是String类型的,所 ...

  2. java solr 查询条件_05 java调用solr的api完成数据的查询

    本文将演示通过java代码完成solr数据的新增.修改与删除. 1.版本约束 CentOS7 工作站 solr-4.10.3 putty apache-tomcat-8.5.38 2.前提约束 3.新 ...

  3. Solr+Hbase多条件查(优劣互补)

    为什么要使用solr+hbase组合: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组 ...

  4. 亿级数据多条件组合查询——秒级响应解决方案

    1 概述 组合查询为多条件组合查询,在很多场景下都有使用.购物网站中通过勾选类别.价格.销售量范围等属性来对所有的商品进行筛选,筛选出满足客户需要的商品,这是一种典型的组合查询.在小数据量的情况下,后 ...

  5. 多条件组合查询+分页

    比较麻烦,把他记录下来. 前台UI: 实现的类代码: 程序代码 /// <summary>         /// 多条件组合查询         /// </summary> ...

  6. 页面多条件组合查询功能 代码 如何写效率高_Jeecg Boot 2.2 首个里程碑版本发布,低代码平台

    项目介绍 JeecgBoot是一款基于代码生成器的低代码开发平台,开源界"小普元"超越传统商业企业开发平台!采用前后端分离架构:SpringBoot 2.x,Ant Design& ...

  7. es dsl多条件组合查询(转)

    [README]在不评分的情况下, 推荐使用filter 过滤查询,因为不评分,查询性能优于评分性能: 转:https://www.elastic.co/guide/cn/elasticsearch/ ...

  8. 树控件,多条件组合查询与混合数据源

    //实现多条件查询 //...连接数据库的代码 SqlDataAdapter sda = new SqlDataAdapter(sql,con); DataTable dt = new DataTab ...

  9. php js脚本查询php,php结合js实现多条件组合查询

    本文实例为大家分享了php结合js实现多条件组合查询的具体代码,供大家参考,具体内容如下 一.效果图 二.前端代码 Jquery分类 .templinkactive { padding:5px; te ...

最新文章

  1. dropdownlist绑定的二种方法
  2. widnows命令行常用命令使用 和 windows创建文件,写内容到文件
  3. 解析程序员的几个成长阶段
  4. 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
  5. 25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)
  6. centos 安装软件
  7. jQuery教学-简单好用的视差滚动特效Parallax Effect
  8. golang dlv 远程调试
  9. linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)
  10. [经验] Cocos Creator使用笔记 --- 调用不同脚本下的函数
  11. 2017年计算机期刊目录,【2017年整理】核心期刊目录一览表.doc
  12. 桌面高效便捷的多窗口调整管理工具
  13. python爬虫网络中断_python爬虫中断
  14. 2014年计算机基础知识试题及答案,2014年计算机基础知识试题及答案大全—word版...
  15. 一只测试喵的重新启航
  16. html 字体居中 font,CSS字体(font)
  17. 计算机启动到安全模式,电脑正常开机会进入安全模式怎么办
  18. win gvim erlang 环境配置
  19. 分库分表之MyCat应用
  20. python股票分析入门_学习用Python分析股票数据(入门)

热门文章

  1. SQLSERVER2008--日志收缩 or 日志清理
  2. vc无法连接的原因分析
  3. Qt/Embedded开发环境的的搭建(二)
  4. TurboMail邮件服务器 V4.2.0 正式发布
  5. c 语言 二维数组地址,C/C++ 关于一维或二维数组首地址表示含义
  6. python函数-返回菲波那切数列for,range,append
  7. 【日常】Mac安装Homebrew
  8. linux vim修改字符串,Linux系统vi(vim)编辑器命令说明
  9. Beyond Saliency map
  10. tensorflow has no attribute logging