java操作solr实现多条件查询
分类: ssm 专栏: 爱旅行项目 标签: java操作solr实现多条件查询
2023-02-20 18:46:05 392浏览
java操作solr实现多条件查询
if (EmptyUtils.isEmpty(vo) || EmptyUtils.isEmpty(vo.getDestination())){ throw new Exception("目的地不能为空"); } SolrQuery solrQuery = new SolrQuery("*:*"); StringBuilder qQuery = new StringBuilder(); if (EmptyUtils.isNotEmpty(vo)) { //q条件 //destination (string): [必填] 目的地 qQuery.append("destination:" + vo.getDestination()); //keyword (string): [非必填] 关键字 if (EmptyUtils.isNotEmpty(vo.getKeywords())) { qQuery.append(" AND keyword:" + vo.getKeywords()); } if (EmptyUtils.isNotEmpty(qQuery.toString())) { solrQuery.setQuery(qQuery.toString()); } //fq条件 //hotelLevel (integer): [非必填] 酒店级别(1-5) if (EmptyUtils.isNotEmpty(vo.getHotelLevel())) { solrQuery.addFilterQuery("hotelLevel:" + vo.getHotelLevel() + ""); } //featureIds (String): [非必填] 酒店特色id if (EmptyUtils.isNotEmpty(vo.getFeatureIds())) { StringBuilder buffer = new StringBuilder("("); int flag = 0; //特色 前台是复选框,可以勾选多个作为查询条件 // 123,125,127 String featureIdArray[] = vo.getFeatureIds().split(","); for (String featureId : featureIdArray) { if (flag == 0) { buffer.append(" featureIds:" + "*," + featureId + ",*"); } else { buffer.append(" OR featureIds:" + "*," + featureId + ",*"); } flag++; } buffer.append(")"); solrQuery.addFilterQuery(buffer.toString()); } //tradeAreaIds (string): [非必填] 商圈id if (EmptyUtils.isNotEmpty(vo.getTradeAreaIds())) { StringBuilder buffer = new StringBuilder("("); int flag = 0; //前台是复选框,可以勾选多个作为查询条件 String tradeAreaIdArray[] = vo.getTradeAreaIds().split(","); for (String tradeAreaId : tradeAreaIdArray) { if (flag == 0) { buffer.append(" tradingAreaIds:" + "*," + tradeAreaId + ",*"); } else { buffer.append(" OR tradingAreaIds:" + "*," + tradeAreaId + ",*"); } flag++; } buffer.append(")"); solrQuery.addFilterQuery(buffer.toString()); } //maxPrice (number): [非必填] 最高价 if (EmptyUtils.isNotEmpty(vo.getMaxPrice())) { solrQuery.addFilterQuery("minPrice:" + "[* TO " + vo.getMaxPrice() + "]"); } //minPrice (number): [非必填] 最低价 if (EmptyUtils.isNotEmpty(vo.getMinPrice())) { solrQuery.addFilterQuery("minPrice:" + "[" + vo.getMinPrice() + " TO *]"); } //ascSort (string): [非必填] 按照某个字段升序排 // 取值为(isOkCount或avgScore或minPrice或hotelLevel) // isOkCount-最受欢迎 avgScore-评分 minPrice-价格 hotelLevel-星级 //点下升序排,在点下就按降序排 if (EmptyUtils.isNotEmpty(vo.getAscSort())) { solrQuery.addSort(vo.getAscSort(), SolrQuery.ORDER.asc); } //descSort (string): [非必填] 按照某个字段降序排 // 取值为(isOkCount或avgScore或minPrice或hotelLevel) // isOkCount-最受欢迎 avgScore-评分 minPrice-价格 hotelLevel-星级 if (EmptyUtils.isNotEmpty(vo.getDescSort())) { solrQuery.addSort(vo.getDescSort(), SolrQuery.ORDER.desc); } } solrQuery.setStart((vo.getPageNo()-1)*vo.getPageSize()); solrQuery.setRows(vo.getPageSize()); QueryResponse response = client.query(solrQuery); Integer total = Math.toIntExact(response.getResults().getNumFound()); List<ItripHotelVO> voList = response.getBeans(ItripHotelVO.class); Page<ItripHotelVO> page = new Page<ItripHotelVO>(vo.getPageNo(),vo.getPageSize(),total); page.setRows(voList); return page;
好博客就要一起分享哦!分享海报
他的专栏
他感兴趣的技术