设为首页 收藏本站
查看: 1146|回复: 0

[经验分享] solr的多条件组合查询和solr的范围查询【转】

[复制链接]

尚未签到

发表于 2017-12-19 13:30:52 | 显示全部楼层 |阅读模式
  存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到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;
  •     }
  • }
  说明:上面的代码片段其实关键的地方就是价格区间的代码,这个有时候在其他博文上看到,但是没有给出具体代码的体现比较抽象,这里我就直接写在代码上了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425703-1-1.html 上篇帖子: (转载)solr时区问题解决方案 下篇帖子: solrcloud(solr集群版)安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表