java solr 查询例子_Solr 后台查询实例 (工作备查)

有时间再进行整理

packagexxx.service.impl;importjava.util.HashMap;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.log4j.Logger;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Transactional;importorg.springframework.web.client.RestTemplate;importcom.google.common.base.Joiner;importxxx.config.ApplicationProperties;importxxx.dbmodel.Copyright;importxxx.repository.generic.CopyrightGenericRepository;importxxx.service.CopyrightService;importxxx.web.rest.util.StringUtil;

@Service

@Transactionalpublic class CopyrightServiceImpl implementsCopyrightService {private static final Logger log = Logger.getLogger(CopyrightServiceImpl.class);

@AutowiredprivateApplicationProperties applicationProperties;

@AutowiredprivateCopyrightGenericRepository copyrightGenericTRepository;

@Qualifier("solrRestTemplate")

@AutowiredprivateRestTemplate restTemplate;

@OverridepublicCopyright getOneById(String id) {returncopyrightGenericTRepository.getOneById(id);

}

@Overridepublic String getPageFromSolr(Copyright copyright, int page, introws,

String sidx, String sord) {//查询参数Map

Map paramsMap = new HashMap<>();

Map copyrightFields = new HashMap<>();try{

copyrightFields=BeanUtils.describe(copyright);

}catch(Exception e) {

log.info("search parms is error in CopyrightFieldsServiceImpl!", e);

}for (Entryfield : 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 queryMap =setQueryMap(paramsMap, page, rows, sidx, sord);//solr查询

return restTemplate.postForObject(applicationProperties.getStorage().getSorlUrl(), queryMap, String.class);

}private Map setQueryMap(Map paramsMap, int page, introws, String sidx, String sord){

Map 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");returnquery;

}

@OverridepublicLong count() {returncopyrightGenericTRepository.count();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值