有时间再进行整理
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. python基础一数据类型之集合

    摘要: python基础一中介绍数据类型的时候有集合,所以这篇主要讲集合. 1,集合的定义 2,集合的功能 3,集合的方法 1,集合的定义 list1 = [1,4,5,7,3,6,7,9] set1 ...

  2. Linux 进程管理之四大名捕

    本文来自网络,著作权归原创作者所有,不做任何商业用途. 一.四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”.内功卓越的 ...

  3. cut切割,简单的取列

    cut 切割,简单的取列命令. -d 指定分隔符 -f 数字 取第几列 -c n-m 取n列到m列字符. //提取字符,不常用 例如:已知bqh.txt文件里的内容为“I am bqh myqq is ...

  4. elasticsearch安装步骤

    今天我们来安装一下elasticsearch,我们采用RPM包安装的方式来,版本为6.5.4.系统为centos7.5版本. 1.首先设置系统环境 1)编辑/etc/sysctl.conf文件添加下面 ...

  5. Javaweb学习(三):Servlet程序

    好了,既然开发环境已经配置好了.那么我们首先要搞定得便是servlet了,至于为什么不先去研究jsp,这是因为jsp与servlet本就是一体两面,jsp其本身经过编译.载入.转化等步骤最终会成为se ...

  6. javascript,object,IDispatchEx笔记

    //js: var testObj=new Object; //com内部: testObj=Object::InvokeEx(wFlags==DISPATCH_CONSTRUCT); //注: // ...

  7. 51nod 1636 教育改革

    题目链接 令f[i][j][k]为第i天选择的课程为j,设置作业为a[j]+k时的最大作业量. 那么f[i][j][k]可以由哪些状态转移而来?先把课程按复杂度排序,那么可以转移来的课程是f[i-1] ...

  8. 团队作业——Alpha冲刺 5/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面完成部分内容,学习了下拉菜单控件的建立,完善界面标题内容,以及交互. 明日任务:继续完善编辑界面,学习使用gallery,着手配图 ...

  9. burpsuite联合sqlmap扫描注入点

    其实我们在众测的时候完全可以使用burpsuite联合sqlmap测试目标的注入漏洞.对get和post型注入都支持. 先来记录proxy的log , 记住路径     把proxy拦截关掉 接下来浏 ...

  10. AMD、CMD和Common规范

    1.名词解释AMD:Asynchronous Modules Definition异步模块定义,提供定义模块及异步加载该模块依赖的机制.CMD:Common Module Definition 通用模 ...