有时间再进行整理
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自学——文件处理(截取文件内容)

    #截断文件内容使用的函数为truncate()来截断文件中的内容# 注意当truncate()括号内没有定义对象时则会删除文件内容:当括号内为指定某个条件时文件会截取从0到指定位置的内容f=open( ...

  2. mysql中InnoDB表为什么要建议用自增列做主键

    InnoDB引擎表的特点 1.InnoDB引擎表是基于B+树的索引组织表(IOT) 关于B+树 (图片来源于网上) B+ 树的特点: (1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关 ...

  3. ssh中文手册

    ssh-keygen 中文手册 sshd_config 中文手册 sshd 中文手册

  4. alias 别名

    别名的作用: 1.通过给危险命令加一些保护参数,防止人为误操作. 2.把很多复杂的字符串或命令变成一个简单的字符串或命令. alias 用法: 定义别名: alias rm='echo "没 ...

  5. 端口扫描--zmap

    ZMap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描的工具.ZMap是研究者手中的利器,但在运行ZMap时,请注意,您很有 可能正在以每秒140万个包的速度扫描整个IPv4地址空间 . ...

  6. 利用Chrome浏览器的开发者工具截取整个页面

    ①打开Chrome浏览器的开发者工具: 快捷键: command + Alt + I (Mac). Ctrl + shift + I (Windows) 或者: 鼠标右键 -> 弹出菜单中选择 ...

  7. libcurl.dll 7.60.0静态库包含openssl/zlib

    最近做个QT的小程序需要使用LIBCURL支持HTTPS,结果查资料发现官方默认的是不支持的,需要手动重新编译,编译的时候加入SSL支持. 看着就好麻烦的样子, 找了一圈,还真有现成的,但是现在写程序 ...

  8. express+mysql+vue开发环境搭建

    最近开始做一个实验室资产管理系统,后台使用node.js的Express框架,前端使用vue,数据库使用mysql.在这里开始简单记录一下开发过程和遇到的问题. 今天要说的是express+mysql ...

  9. [Message123] JMS 与 MQ

    https://www.cnblogs.com/steven520213/p/6810369.html JMS的队列消息传递过程如下图(消费者与生产者): JMS的主题消息传递过程如下图(发布/订阅) ...

  10. Fuel 30 分钟快速安装OpenStack

    一直以来,对于openstack 的初学者来讲,安装往往是入门的头大难题.在E版本之前,要搭建一个基本能用的openstack 环境那是相当麻烦,自己要装机,自己搞源,自己照着文档敲命令,又没有靠谱的 ...