有时间再进行整理
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 后台查询实例 (工作备查)的更多相关文章

  1. solr 查询 实例分析

    solr索引查询接口:http://localhost:8080/solr/query 首先了解一下查询参数的含义. q Solr 中用来搜索的查询.可以通过追加一个分号和已索引且未进行断词的字段(下 ...

  2. 【MySQL】分页查询实例讲解

    MySQL分页查询实例讲解 1. 前言 本文描述了团队在工作中遇到的一个MySQL分页查询问题,顺带讲解相关知识点,为后来者鉴.本文的重点不是"怎样"优化表结构和SQL语句,而是探 ...

  3. 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(三)(错误整理篇)

    使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一) 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(二) 以上两篇已经把流 ...

  4. (24)ASP.NET Core EF查询(查询的工作原理、跟踪与非跟踪查询)

    1.查询生命周期 在进入正题时候,我们先来了解EF Core查询的生命周期. 1.1LINQ查询会由Entity Framework Core处理并生成给数据库提供程序可处理的表示形式(说白了就是生成 ...

  5. solr后台操作Documents之增删改查

    偶尔会用到solr后台操作一些数据,比如测试等一些情况.但具体用的时候可能会忘记,或者搜的时候结果不全,在此略详细的记一下. 1.添加 {"id":6,"title&qu ...

  6. Solr 排除查询

    前言 solr排除查询也就是我们在数据库和程序中经常处理的不等于,solr的语法是在定语前加[-].. StringBuilder sbHtml=new StringBuilder(); shBhtm ...

  7. 【solr】之solr界面查询返回距离并排序

    使用solr界面查询 {!geofilt}距离函数 star:[4 TO 5]星级排序 geodist() desc 距离排序 pt :31.221717,121.580891 sfield:loca ...

  8. 【转】Solr客户端查询参数总结

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  9. iOS开发之数据存取2-CoreData后台查询数据

    注意:本人所讲的后台查询必须在使用CoreData时选择存储类型为“SQLite”,因为二进制或者XML存储方式会在打开的时候直接读到内存中. 1.CoreData数据后台查询出现的情况 CoreDa ...

随机推荐

  1. TFS命令行操作

    前言 本文主要介绍如何通过TFS(Team Foundation Server)命令行强制解锁(UnDo)项目成员对项目文件的占用. 正文 在多人同时开发项目的时候,如果遇到项目组成员独占签出文件后未 ...

  2. windows10如何打开vhd文件

    本人电脑安装了Visual Studio 2017,但是由于项目需求需要Core SDK(2.0)的版本支持,也就是2017最新版.所以现在需要利用visual Studio 2017最新版本的安装包 ...

  3. Python中的分组函数(groupby、itertools)

    from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数 from itertools import groupby ...

  4. WLW/OLW 最佳博客写作软件

    前言 我发布到博客园中文章大多是通过Windows live Writer(wlw)来写的,本文记录一下wlw的安装及快捷键. WLW博客园插入代码插件:http://www.cnblogs.com/ ...

  5. rename 批量修改文件名简单用法

    有的时候我们需要批量创建文件做测试,为了做区分,一般只要稍稍动动文件名即可,MV命令既可以移动文件,也是可以修改文件名的,但批量修改文件名MV做不到,此时,我们可以用rename命令批量修改是蛮不错的 ...

  6. vue+axios自己踩过的坑

    axios的介绍就不用了吧,api有具体的介绍axios或者是axios中文: 主要讲的就是我自己在第一次使用axios中遇到的问题,及二次封装 先来说说二次封装,之前自己也是网上找了很多同学的封装, ...

  7. Beta阶段第五次冲刺

    Beta阶段第五次冲刺 严格按照Git标准来,组员有上传Git的才有贡献分没有的为0 代码签入图 1.part1 -站立式会议照片 2.part2 -项目燃尽图 3.part3 -项目进展 1.正在进 ...

  8. nginx 服务器在上传文件出现413代码的解决方法

    打开nginx主配置文件nginx.conf 找到http{}段,添加client_max_body_size 20m;

  9. vue2.0模拟锚点

    在vue项目中,因为采用路由跳转,会导致无法使用常规的a标签配合ID的锚点功能. 解决办法: <a href="javascript:void(0)" @click=&quo ...

  10. jenkins发版脚本更新

    jenkins 项目名中明确了 是jar tar.gz war包研发需要提供  项目名-地点-环境(研发.测试.生产)-应用项目名称(admin)-包格式(jar\war\gz) deployment ...