Solr 后台查询实例 (工作备查)
2018-05-08 15:01
260 查看
有时间再进行整理
package xxx.service.impl; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.beanutils.BeanUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import com.google.common.base.Joiner; import xxx.config.ApplicationProperties; import xxx.dbmodel.Copyright; import xxx.repository.generic.CopyrightGenericRepository; import xxx.service.CopyrightService; import xxx.web.rest.util.StringUtil; @Service @Transactional public class CopyrightServiceImpl implements CopyrightService { private static final Logger log = Logger.getLogger(CopyrightServiceImpl.class); @Autowired private ApplicationProperties applicationProperties; @Autowired private CopyrightGenericRepository copyrightGenericTRepository; @Qualifier("solrRestTemplate") @Autowired private RestTemplate restTemplate; @Override public Copyright getOneById(String id) { return copyrightGenericTRepository.getOneById(id); } @Override public String getPageFromSolr(Copyright copyright, int page, int rows, String sidx, String sord) { //查询参数Map Map<String, Object> paramsMap = new HashMap<>(); Map<String, String> copyrightFields = new HashMap<>(); try { copyrightFields = BeanUtils.describe(copyright); } catch (Exception e) { log.info("search parms is error in CopyrightFieldsServiceImpl!", e); } for (Entry<String,String> field : copyrightFields.entrySet()) { String key = field.getKey(); String value = field.getValue(); if(StringUtil.isNullStr(value) || "class".equals(key)){ continue; } if(key.endsWith("Id")){ paramsMap.put(key, value); }else{ paramsMap.put(key, "*"+value+"*"); } } //指定查询表名 paramsMap.put("searchType", "CopyrightMG"); if(copyright.getBeginTime() != null){ paramsMap.put("beginTime","["+copyright.getBeginTime()+" TO * ]"); } if(copyright.getEndTime() != null){ paramsMap.put("endTime","[ * TO "+copyright.getEndTime()+" ]"); } //查询条件Map Map<String, Object> queryMap = setQueryMap(paramsMap, page, rows, sidx, sord); //solr查询 return restTemplate.postForObject(applicationProperties.getStorage().getSorlUrl(), queryMap, String.class); } private Map<String, Object> setQueryMap(Map<String, Object> paramsMap, int page, int rows, String sidx, String sord){ Map<String, Object> query = new HashMap<>(); String paramStr = Joiner.on(",").withKeyValueSeparator(":").join(paramsMap); query.put("filterQueries", paramStr); query.put("query", "*:*"); query.put("start", (page-1)*rows);//开始位置 query.put("rows", rows);//查询条数 String sort = "copyrightId desc"; if(!StringUtil.isNullStr(sidx)){ sort = sidx + " " + sord; } query.put("sort", sort); //指定查询数媒集合 query.put("collection", applicationProperties.getStorage().getSorlIndexLibrary()); query.put("returnType", "1"); return query; } @Override public Long count() { return copyrightGenericTRepository.count(); } }
相关文章推荐
- 按照solr分面查询的查询结果顺序,添加到json后从后台发送前端
- java操作solr实现查询功能的实例
- solr 查询 实例分析
- Solr学习之三:Solr各种查询实例
- query ajax json 通过后台代码(查询数据库)绑定html控件select 下拉框实例
- (2)Solr:Java后台获取Solr查询信息
- solr7.2单机查询代码实例
- 结合源码分析Solr&Lucene查询打分的工作流程
- 通过spring boot构建solr查询实例
- 如何读取配置文件并连接后台数据库,且对数据库进行操作实例(查询或修改等)
- 【Apache Solr系列之四】Solr客户端SolrJ API使用文档-查询实例
- solr 查询 实例分析
- 后台多条sql查询,json传前台,前台处理多条sql数据实例
- spring,springmvc,mybatits集成实例--后台分页查询
- Android App后台服务报告工作状态实例
- 史上最详细的客服系统产品落地|后台产品经理的工作实例,有那么苦吗?
- springboot构建solr查询实例
- angular实现模糊查询实例,后台就不需要单独写模糊查询的条件了
- solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法
- jquery使用淘宝接口跨域查询手机号码归属地实例