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

存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到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. }

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

solr的多条件组合查询和solr的范围查询【转】的更多相关文章

  1. Solr实现 并集式、多值、复杂 过滤查询的权限【转】

    公司开发使用的搜索引擎核心是Solr,但是应为业务原因,需要相对复杂权限机制. 1)通过Solr的filterQuery可以实现field过滤,实现过滤项的效果.索引A{filter1:a,field ...

  2. SolrJ查询条件组合查询实现——(十六)

    带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...

  3. Solr 6.0 学习(五)solr基本查询和高级查询

    参考:http://www.cnblogs.com/rainbowzc/p/4354224.html 查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多 ...

  4. jsp 多条件组合查询

    web层: public String query(HttpServletRequest request, HttpServletResponse response) throws ServletEx ...

  5. 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息

    综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...

  6. php多条件组合查询

    1. 通过表单把查询条件提交到php文件中,在文件中以post的形式得到传送过来的条件. 2. 把传过来的查询条件赋给变量. 3. 判断如果查询条件非空,则拼接查询sql. 大体如下: 1. < ...

  7. Spring Data JPA 复杂/多条件组合查询

    1: 编写DAO类或接口  dao类/接口 需继承 public interface JpaSpecificationExecutor<T> 接口: 如果需要分页,还可继承 public ...

  8. Solr In Action 笔记(1) 之 Key Solr Concepts

    Solr In Action 笔记(1) 之 Key Solr Concepts 题记:看了下<Solr In Action>还是收益良多的,只是奈何没有中文版,只能查看英语原版有点类,第 ...

  9. Solr入门和实践以及我对Solr的8点理解

    友情提示Solr的内容还是比较多的,一篇文章只能讲解一部分.全面介绍,没兴趣,没时间,也没能力,回报还不大.本文只写点我认为比较重要的知识点,独特的个人想法.仅供参考哦,更多细节需要自己去琢磨. 概述 ...

随机推荐

  1. cat /proc/cpuinfo | awk -F: '/name/{print $2}' | uniq -c

    cat /proc/cpuinfo | awk -F: '/name/{print $2}' | uniq -c

  2. boogo08---中间件

    package main //中间件1:只允许特定host请求过来 import ( "fmt" "net/http" ) //SingleHost是一个中间件 ...

  3. linux 一个超简单的makefile

    makefile 自动化变量:   $@ : 规则的目标文件名  例如:main:main.o test.o                    g++ -Wall -g  main.o test. ...

  4. react native 中的ListView

    ListView 的运用: 1.首先在react native中引入这个组件: 2.初始化的ListView 的相关属性: constructor(props) { super(props); con ...

  5. Oracle10G各版本下载以及补丁地址

    Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit ...

  6. css 选择器中的正则表达式

    正则表达式在任何语言中都有使用,只是使用的形式不一样而已 css也是一门语言,也有自己的正则表达式 正则表达式中的一些通用规则: 1 ^ 表示字符串开始位置匹配 2 $表示字符串结束为止匹配 3 *表 ...

  7. Table View Programming Guide for iOS---(一)---About Table Views in iOS Apps

    About Table Views in iOS Apps Table views are versatile user interface objects frequently found in i ...

  8. 清理c盘的文件

    C:/Users/用户名/AppData里面默认有三个文件夹,分别是Local,LocalLow,Roaming,简单地来说,都是用来存放软件的配置文件和临时文件的,里面有很多以软件公司或者软件名称命 ...

  9. unix网络编程环境配置程序运行

    1 查看ubuntu版本 cat /etc/issue 2 查看版本 cat /proc/version 3 下载 你可以通过其他方式下载 这里下载好了 文件名为unpv13e 4 开始配置 (1)c ...

  10. UVa 1644 Prime Gap (水题,暴力)

    题意:给定一个数 n,求它后一个素数和前一个素数差. 析:先打表,再二分查找. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400 ...