Commit b87f6c8a by 梁家彪

演示

parent 4d210969
......@@ -93,9 +93,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <configuration>-->
<!-- <skip>true</skip>-->
<!-- </configuration>-->
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nnjcy-data-model</artifactId>
<groupId>com.zq</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>doc-server</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
<dependency>
<groupId>com.zq</groupId>
<artifactId>common-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 使用@profiles.active@需要添加以下内容 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
\ No newline at end of file
package com.zq.doc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DocApplication {
public static void main(String[] args) {
SpringApplication.run(DocApplication.class, args);
}
}
\ No newline at end of file
package com.zq.doc.controller;
import cn.hutool.core.util.ObjectUtil;
import com.zq.common.vo.ResultVo;
import com.zq.doc.mapper.AjxxFileMapper;
import com.zq.doc.vo.AplhaDocVo;
import com.zq.doc.vo.SolrDocumentPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author zhoudong
* @version 0.1
* @date 2018/12/01 15:35
*/
@RestController
@RequestMapping("/solr/alpha/doc")
public class DocController {
private final String core = "alpha_doc_core";
@Autowired
private SolrClient client;
@Resource
private AjxxFileMapper ajxxFileMapper;
/**
* 综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息
*
* @return
*/
@GetMapping("/db/search")
@ApiOperation("数据库综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息")
public SolrDocumentPage dbSearch(@ApiParam("页码") @RequestParam(defaultValue = "1") Integer pageNum,
@ApiParam("每页记录数") @RequestParam(defaultValue = "10") Integer pageSize,
@ApiParam("查询条件") AplhaDocVo aplhaDocVo) throws SolrServerException, IOException {
SolrQuery params = new SolrQuery();
//查询条件, 这里的 q 对应 下面图片标红的地方
if (StringUtils.isBlank(aplhaDocVo.getAjnr())) {
params.set("q", "*");
} else {
params.set("q", aplhaDocVo.getAjnr());
}
if (StringUtils.isNotEmpty(aplhaDocVo.getAh())) {
params.addFilterQuery("ah:*" + aplhaDocVo.getAh() + "*");
}
if (ObjectUtil.isNotNull(aplhaDocVo.getAjmc())) {
params.addFilterQuery("ajmc:*" + aplhaDocVo.getAjmc() + "*");
}
if (StringUtils.isNotBlank(aplhaDocVo.getFymc())) {
params.addFilterQuery("fymc:*" + aplhaDocVo.getFymc() + "*");
}
if (StringUtils.isNotBlank(aplhaDocVo.getAy())) {
params.addFilterQuery("ay:*" + aplhaDocVo.getAy() + "*");
}
if (ObjectUtil.isNotNull(aplhaDocVo.getAjnr())) {
params.addFilterQuery("ajnr:*" + aplhaDocVo.getAjnr() + "*");
}
//排序
params.addSort("id", SolrQuery.ORDER.desc);
//分页
params.setStart((pageNum - 1) * pageSize);
params.setRows(pageSize);
//默认域
params.set("df", "keyword");
//高亮打开开关
params.setHighlight(true);
//指定高亮域
params.addHighlightField("ajnr");
//设置前缀
params.setHighlightSimplePre("<span style='color:red'>");
//设置后缀
params.setHighlightSimplePost("</span>");
QueryResponse queryResponse = client.query(core, params);
SolrDocumentList results = queryResponse.getResults();
long numFound = results.getNumFound(); // 查询到的结果
//获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
Map<String, Map<String, List<String>>> highlight = queryResponse.getHighlighting();
for (SolrDocument result : results) { // 将高亮结果合并到查询结果中
result.remove("keyword");
highlight.forEach((k, v) -> {
if (result.get("id").equals(k)) {
v.forEach((k1, v1) -> {
if (!k1.equals("keyword")) result.setField(k1, v1); // 高亮列合并如结果
});
}
});
}
return new SolrDocumentPage(pageNum, pageSize, numFound, results);
}
@GetMapping("/ay")
public ResultVo ay(){
return ResultVo.success(new ArrayList<>());
}
@GetMapping("/fy")
public ResultVo fy(){
return ResultVo.success(new ArrayList<>());
}
@GetMapping("/{id}")
public ResultVo getById(@PathVariable("id") Long id){
return ResultVo.success(ajxxFileMapper.selectById(id));
}
}
\ No newline at end of file
package com.zq.doc.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AjxxFile {
/**
* id
*/
private Long id;
/**
* 案号
*/
private String ah;
/**
* 案件名称
*/
private String ajmc;
/**
* 法院名称
*/
private String fymc;
/**
* 案由
*/
private String ay;
/**
* 文书内容
*/
private String ajnr;
/**
* 裁判时间
*/
private Date time;
/**
* 所在压缩包
*/
private String zip;
/**
* 文件名
*/
private String filename;
}
\ No newline at end of file
package com.zq.doc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.doc.entity.AjxxFile;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AjxxFileMapper extends BaseMapper<AjxxFile> {
}
\ No newline at end of file
package com.zq.doc.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AplhaDocVo {
/**
* id
*/
private Long id;
/**
* 案号
*/
private String ah;
/**
* 案件名称
*/
private String ajmc;
/**
* 法院名称
*/
private String fymc;
/**
* 案由
*/
private String ay;
/**
* 案件内容
*/
private String ajnr;
/**
* 裁判时间
*/
private Date time;
}
\ No newline at end of file
package com.zq.doc.vo;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.solr.common.SolrDocumentList;
/**
* @author CodeAnyWay
* @since 2019-03-14
*/
@ApiModel("分页查询结果")
@JsonPropertyOrder({"start", "size", "total", "rows"})
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SolrDocumentPage {
@ApiModelProperty("本页记录在所有记录中的起始位置")
private int start;
@ApiModelProperty("每页记录条数")
private int size;
@ApiModelProperty("总记录条数")
private Long total;
@ApiModelProperty("当前页数据")
private SolrDocumentList rows;
}
server:
port: 9633
#配置数据源
spring:
application:
name: DOC-SERVER
servlet:
#上传文件限制
multipart:
#单个文件大小
max-file-size: 20MB
#设置总上传的数据大小
max-request-size: 50MB
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: ${jdbc.driver-class-name}
username: ${jdbc.username}
password: ${jdbc.password}
url: jdbc:mysql://119.45.183.210:13308/nnjcy_alpha?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
# 初始连接数
initial-size: 5
# 最小连接数
min-idle: 10
# 最大连接数
max-active: 20
# 获取连接超时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 检测连接是否有效
validation-query: SELECT 1 FROM DUAL
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
allow: ""
filter:
stat:
enabled: true
# 记录慢SQL
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
data:
solr:
host: http://116.205.237.76:8983/solr/
\ No newline at end of file
spring:
cloud:
config:
name: config
profile: @profiles.active@
discovery:
enabled: true
service-id: CONFIG-SERVER
uri: http://127.0.0.1:8300/
eureka:
instance:
prefer-ip-address: true
lease-renewal-interval-in-seconds: 2 #每间隔1s,向服务端发送一次心跳,证明自己依然"存活"
lease-expiration-duration-in-seconds: 6 #告诉服务端,如果我2s之内没有给你发心跳,就代表我"死"了,将我踢出掉。
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
client:
service-url:
defaultZone: http://admin:123456@127.0.0.1:8800/eureka/
......@@ -50,6 +50,10 @@ spring:
uri: lb://${data.name}
predicates:
- Path=/data/**
- id: solr
uri: lb://DOC-SERVER
predicates:
- Path=/solr/**
#eureka:
# client:
# service-url:
......
......@@ -116,6 +116,7 @@
<module>data-collect-server</module>
<module>dataoperation-server</module>
<module>flow-component</module>
<module>doc-server</module>
</modules>
<profiles>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment