Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
SolrDataComparison
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
常超
SolrDataComparison
Commits
cf8516c9
Commit
cf8516c9
authored
Mar 19, 2019
by
chentian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
比对结果功能开发
parent
4fdf5c8a
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
477 additions
and
133 deletions
+477
-133
pom.xml
+1
-0
src/main/java/com/cc/solr/conf/SchedulerConfig.java
+14
-0
src/main/java/com/cc/solr/conf/WebMvcConfig.java
+2
-0
src/main/java/com/cc/solr/controller/ComparisonDataController.java
+2
-2
src/main/java/com/cc/solr/controller/ComparisonResultController.java
+89
-86
src/main/java/com/cc/solr/controller/JobController.java
+6
-0
src/main/java/com/cc/solr/controller/SourceDataController.java
+1
-1
src/main/java/com/cc/solr/entity/RedisDataInfo.java
+42
-0
src/main/java/com/cc/solr/job/SolrDataJob.java
+150
-0
src/main/java/com/cc/solr/service/CompareTaskService.java
+1
-0
src/main/java/com/cc/solr/service/serviceimpl/CompareTaskServiceImpl.java
+1
-2
src/main/java/com/cc/solr/util/MyJobFactory.java
+22
-0
src/main/java/com/cc/solr/util/RedisUtil.java
+10
-2
src/main/resources/solr.properties
+3
-1
src/main/resources/templates/comparisonResultList.html
+52
-39
src/main/resources/templates/coreResultList.html
+81
-0
No files found.
pom.xml
View file @
cf8516c9
...
...
@@ -151,6 +151,7 @@
<artifactId>
quartz
</artifactId>
<version>
2.2.1
</version>
</dependency>
</dependencies>
<build>
<finalName>
SolrDataComparison
</finalName>
...
...
src/main/java/com/cc/solr/conf/SchedulerConfig.java
View file @
cf8516c9
package
com
.
cc
.
solr
.
conf
;
import
com.cc.solr.util.MyJobFactory
;
import
org.quartz.Scheduler
;
import
org.quartz.ee.servlet.QuartzInitializerListener
;
import
org.springframework.beans.factory.config.PropertiesFactoryBean
;
...
...
@@ -46,4 +47,17 @@ public class SchedulerConfig {
return
schedulerFactoryBean
().
getScheduler
();
}
//SolrDataJob quatz无法注入redisUtil,。 一:新建MyJobFactory类 二:配置以下步骤解决 begin
@Bean
public
MyJobFactory
jobFactory
(){
return
new
MyJobFactory
();
}
@Bean
public
SchedulerFactoryBean
schedulerFactoryBean
(
MyJobFactory
jobFactory
){
SchedulerFactoryBean
schedulerFactoryBean
=
new
SchedulerFactoryBean
();
schedulerFactoryBean
.
setJobFactory
(
jobFactory
);
return
schedulerFactoryBean
;
}
//SolrDataJob quatz无法注入redisUtil,配置以下步骤解决。end
}
src/main/java/com/cc/solr/conf/WebMvcConfig.java
View file @
cf8516c9
...
...
@@ -24,5 +24,7 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
registry
.
addViewController
(
"/comparisonResultList"
).
setViewName
(
"comparisonResultList"
);
registry
.
addViewController
(
"/sourceecharts"
).
setViewName
(
"sourceecharts"
);
registry
.
addViewController
(
"/comparisonecharts"
).
setViewName
(
"comparisonecharts"
);
registry
.
addViewController
(
"/coreResultList"
).
setViewName
(
"coreResultList"
);
}
}
src/main/java/com/cc/solr/controller/ComparisonDataController.java
View file @
cf8516c9
...
...
@@ -42,7 +42,7 @@ public class ComparisonDataController {
throws
SolrServerException
,
IOException
{
//不用默认SolrClient取url,用HttpSolrClient来访问solr,默认的在application.yml里面,只能配置一个地址,这里的地址写在配置文件里,可以写多个。
Properties
properties
=
propertiesUtil
.
propertiesUtil
(
"solr.properties"
);
String
comparisonsolrdata
=
properties
.
getProperty
(
"comparisonsolrdata"
);
String
comparisonsolrdata
=
properties
.
getProperty
(
"comparisonsolrdata"
);
HttpSolrClient
client
=
new
HttpSolrClient
(
comparisonsolrdata
);
SolrQuery
params
=
new
SolrQuery
();
...
...
@@ -66,7 +66,7 @@ public class ComparisonDataController {
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
);
}
else
{
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
+
1
);
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
);
}
params
.
setRows
(
conditionInfo
.
getLimit
());
//每页显示10条
...
...
src/main/java/com/cc/solr/controller/ComparisonResultController.java
View file @
cf8516c9
package
com
.
cc
.
solr
.
controller
;
import
com.cc.solr.entity.ConditionInfo
;
import
com.cc.solr.entity.CompareTask
;
import
com.cc.solr.entity.RedisDataInfo
;
import
com.cc.solr.service.CompareTaskService
;
import
com.cc.solr.util.RedisUtil
;
import
com.cc.solr.util.ResultMap
;
import
com.cc.solr.util.XzxtRestResult
;
import
com.cc.solr.util.propertiesUtil
;
import
io.swagger.annotations.*
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.SolrServerException
;
import
org.apache.solr.client.solrj.impl.HttpSolrClient
;
...
...
@@ -15,6 +15,7 @@ import org.apache.solr.common.SolrDocumentList;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.servlet.ModelAndView
;
import
java.io.IOException
;
import
java.util.Properties
;
...
...
@@ -24,106 +25,108 @@ import java.util.Properties;
public
class
ComparisonResultController
{
@Autowired
CompareTaskService
taskService
;
/**
* 7、查 ++:关键字、高亮、分页 ✔
*
* @return
* @throws SolrServerException
* @throws IOException
*/
@PostMapping
(
"/selectByConditionInfo"
)
//方法描述
@ApiOperation
(
value
=
"插入接口-分页查询"
,
notes
=
"分页查询"
)
//参数描述
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ConditionInfo"
,
value
=
"查询条件实体类"
,
required
=
true
),
})
//返回值描述
@ApiResponses
(
value
=
{
@ApiResponse
(
code
=
200
,
message
=
"OK"
),
@ApiResponse
(
code
=
405
,
message
=
"查询失败"
)
})
public
ResultMap
selectByConditionInfo
(
ConditionInfo
conditionInfo
)
throws
SolrServerException
,
IOException
{
//不用默认SolrClient取url,用HttpSolrClient来访问solr,默认的在application.yml里面,只能配置一个地址,这里的地址写在配置文件里,可以写多个。
Properties
properties
=
propertiesUtil
.
propertiesUtil
(
"solr.properties"
);
String
comparisonsolrdata
=
properties
.
getProperty
(
"comparisonsolrdata"
);
HttpSolrClient
client
=
new
HttpSolrClient
(
comparisonsolrdata
);
SolrQuery
params
=
new
SolrQuery
();
// 查询条件
if
(
conditionInfo
.
getQ
()
==
null
||
""
.
equals
(
conditionInfo
.
getQ
()))
{
params
.
set
(
"q"
,
"*:*"
);
//查询字符串,必须的
}
else
{
params
.
set
(
"q"
,
conditionInfo
.
getQ
());
//暂时写死,查询字符串,必须的
}
// fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
if
(
conditionInfo
.
getFq
()
!=
null
&&
!
""
.
equals
(
conditionInfo
.
getFq
()))
{
params
.
set
(
"fq"
,
conditionInfo
.
getFq
());
}
/*// 排序
if(conditionInfo.getSort()!=null && !"".equals(conditionInfo.getSort())){
params.addSort(conditionInfo.getSort(), SolrQuery.ORDER.desc);
}*/
// 分页
if
(
conditionInfo
.
getPage
()
==
1
)
{
//page是页数,首页起始行数用(页数-1*10)(0,10),第二页起始行数用(页数-1*10)+1:(11,20)
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
);
}
else
{
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
+
1
);
}
params
.
setRows
(
conditionInfo
.
getLimit
());
//每页显示10条
// solr数据库是 itaem
@Autowired
private
RedisUtil
redisUtil
;
if
(
conditionInfo
.
getCore
()
==
null
||
""
.
equals
(
conditionInfo
.
getCore
()))
{
//保存
String
core
=
properties
.
getProperty
(
"core"
);
String
[]
cores
=
core
.
split
(
","
,
-
1
);
core
=
cores
[
0
];
conditionInfo
.
setCore
(
core
);
}
QueryResponse
queryResponse
=
client
.
query
(
conditionInfo
.
getCore
(),
params
);
//QueryResponse queryResponse = client.query(params);
SolrDocumentList
results
=
queryResponse
.
getResults
();
// 数量,分页用
long
total
=
results
.
getNumFound
();
// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理),itaem实例里的数据总数
@PostMapping
(
"/saveCompareTask"
)
@ResponseBody
public
XzxtRestResult
saveCompareTask
(
CompareTask
task
)
{
return
taskService
.
saveTask
(
task
);
}
//获取list
//查询列表与查询总数放到resultMap,用于页面展示
@PostMapping
(
"/compareTaskList"
)
@ResponseBody
public
ResultMap
taskList
(
Model
model
,
CompareTask
task
)
{
ResultMap
resultMap
=
new
ResultMap
();
resultMap
.
setCount
(
new
Long
(
total
).
intValue
());
resultMap
.
setData
(
results
);
try
{
resultMap
=
taskService
.
taskAll
(
task
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
resultMap
;
}
//保存
@
PostMapping
(
"/saveCompareTask
"
)
/**
* @return
*/
@
RequestMapping
(
value
=
"/toCoreResultList
"
)
@ResponseBody
public
XzxtRestResult
saveCompareTask
(
CompareTask
task
){
return
taskService
.
saveTask
(
task
);
public
ModelAndView
toCoreResultList
(
RedisDataInfo
info
)
{
ModelAndView
modelAndView
=
new
ModelAndView
(
"coreResultList"
);
modelAndView
.
addObject
(
"redisDataInfo"
,
info
);
return
modelAndView
;
}
//获取list
@PostMapping
(
"/compareTaskList"
)
//从redis里读取出id,把它作为条件去solr里查询
@PostMapping
(
"/getCoreResultList"
)
@ResponseBody
public
ResultMap
taskList
(
Model
model
,
CompareTask
task
){
ResultMap
resultMap
=
new
ResultMap
();
public
ResultMap
getCoreResultList
(
RedisDataInfo
info
)
{
//根据key,hashkey从redis里取出id begin
String
ids
=
""
;
try
{
resultMap
=
taskService
.
taskAll
(
task
);
}
catch
(
IO
Exception
e
)
{
ids
=
redisUtil
.
hmGet
(
info
.
getJobClassName
()
+
"-"
+
info
.
getJobGroupName
()
+
"-"
+
info
.
getDataSource
(),
info
.
getCore
()).
toString
(
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
System
.
out
.
println
(
ids
);
//根据key,hashkey从redis里取出id end
Properties
properties
=
propertiesUtil
.
propertiesUtil
(
"solr.properties"
);
String
solrdata
=
properties
.
getProperty
(
info
.
getDataSource
());
HttpSolrClient
client
=
new
HttpSolrClient
(
solrdata
);
SolrQuery
params
=
new
SolrQuery
();
// 查询条件
ResultMap
resultMap
=
new
ResultMap
();
if
(
ids
!=
null
&&
!
""
.
equals
(
ids
))
{
//ID:140000000000201807170000000015 or ID:140000000000201807240000000001
String
[]
idAttr
=
ids
.
split
(
","
);
String
id
=
""
;
for
(
int
i
=
0
;
i
<
idAttr
.
length
;
i
++)
{
if
(
id
==
""
)
{
id
=
"ID:"
+
idAttr
[
i
];
}
else
{
id
=
id
+
" or ID:"
+
idAttr
[
i
];
}
}
System
.
out
.
println
(
id
);
params
.
set
(
"q"
,
id
);
//把id拼成类似于select 的in的条件来查询
// 分页
if
(
info
.
getPage
()
==
1
)
{
//page是页数,首页起始行数用(页数-1*10)(0,10),第二页起始行数用(页数-1*10)+1:(11,20)
params
.
setStart
((
info
.
getPage
()
-
1
)
*
10
);
}
else
{
params
.
setStart
((
info
.
getPage
()
-
1
)
*
10
);
}
params
.
setRows
(
info
.
getLimit
());
//每页显示10条
QueryResponse
queryResponse
=
null
;
try
{
queryResponse
=
client
.
query
(
info
.
getCore
(),
params
);
}
catch
(
SolrServerException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
//QueryResponse queryResponse = client.query(params);
SolrDocumentList
results
=
queryResponse
.
getResults
();
// 数量,分页用
long
total
=
results
.
getNumFound
();
// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理),itaem实例里的数据总数
//查询列表与查询总数放到resultMap,用于页面展示
resultMap
.
setCount
(
new
Long
(
total
).
intValue
());
resultMap
.
setData
(
results
);
}
return
resultMap
;
}
return
resultMap
;
}
}
src/main/java/com/cc/solr/controller/JobController.java
View file @
cf8516c9
...
...
@@ -53,6 +53,12 @@ public class JobController
JobDetail
jobDetail
=
JobBuilder
.
newJob
(
getClass
(
jobClassName
).
getClass
()).
withIdentity
(
jobClassName
,
jobGroupName
)
.
build
();
jobDetail
.
getJobDataMap
().
put
(
"Test"
,
"This is test value"
);
jobDetail
.
getJobDataMap
().
put
(
"core"
,
task
.
getCore
());
jobDetail
.
getJobDataMap
().
put
(
"comparisonCore"
,
task
.
getComparisonCore
());
jobDetail
.
getJobDataMap
().
put
(
"fq"
,
task
.
getFq
());
jobDetail
.
getJobDataMap
().
put
(
"q"
,
task
.
getQ
());
jobDetail
.
getJobDataMap
().
put
(
"jobClassName"
,
jobClassName
);
jobDetail
.
getJobDataMap
().
put
(
"jobGroupName"
,
jobGroupName
);
//表达式调度构建器(即任务执行的时间)
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronExpression
);
...
...
src/main/java/com/cc/solr/controller/SourceDataController.java
View file @
cf8516c9
...
...
@@ -75,7 +75,7 @@ public class SourceDataController {
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
);
}
else
{
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
+
1
);
params
.
setStart
((
conditionInfo
.
getPage
()
-
1
)
*
10
);
}
params
.
setRows
(
conditionInfo
.
getLimit
());
//每页显示10条
...
...
src/main/java/com/cc/solr/entity/RedisDataInfo.java
0 → 100644
View file @
cf8516c9
package
com
.
cc
.
solr
.
entity
;
public
class
RedisDataInfo
extends
PageBean
{
private
String
jobClassName
;
private
String
jobGroupName
;
private
String
core
;
private
String
dataSource
;
public
String
getJobClassName
()
{
return
jobClassName
;
}
public
void
setJobClassName
(
String
jobClassName
)
{
this
.
jobClassName
=
jobClassName
;
}
public
String
getJobGroupName
()
{
return
jobGroupName
;
}
public
void
setJobGroupName
(
String
jobGroupName
)
{
this
.
jobGroupName
=
jobGroupName
;
}
public
String
getCore
()
{
return
core
;
}
public
void
setCore
(
String
core
)
{
this
.
core
=
core
;
}
public
String
getDataSource
()
{
return
dataSource
;
}
public
void
setDataSource
(
String
dataSource
)
{
this
.
dataSource
=
dataSource
;
}
}
src/main/java/com/cc/solr/job/SolrDataJob.java
0 → 100644
View file @
cf8516c9
package
com
.
cc
.
solr
.
job
;
import
com.cc.solr.util.RedisUtil
;
import
com.cc.solr.util.propertiesUtil
;
import
org.apache.solr.client.solrj.SolrQuery
;
import
org.apache.solr.client.solrj.SolrServerException
;
import
org.apache.solr.client.solrj.impl.HttpSolrClient
;
import
org.apache.solr.client.solrj.response.QueryResponse
;
import
org.apache.solr.common.SolrDocument
;
import
org.apache.solr.common.SolrDocumentList
;
import
org.quartz.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.AsyncResult
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.concurrent.Future
;
public
class
SolrDataJob
implements
BaseJob
{
private
static
Logger
_log
=
LoggerFactory
.
getLogger
(
SolrDataJob
.
class
);
@Resource
private
RedisUtil
redisUtil
;
public
SolrDataJob
()
{
}
public
void
execute
(
JobExecutionContext
context
)
throws
JobExecutionException
{
_log
.
error
(
"Hello Job执行时间: "
+
new
Date
());
JobKey
key
=
context
.
getJobDetail
().
getKey
();
//获取JobDetail的标识信息
System
.
out
.
println
(
"JobDetail‘s name and group are "
+
key
.
getName
()+
":"
+
key
.
getGroup
());
TriggerKey
triggerKey
=
context
.
getTrigger
().
getKey
();
//获取Trigger的标识信息
System
.
out
.
println
(
"Trigger‘s name and group are "
+
triggerKey
.
getName
()+
":"
+
triggerKey
.
getGroup
());
JobDataMap
map
=
context
.
getJobDetail
().
getJobDataMap
();
String
core
=
map
.
getString
(
"core"
);
String
comparisonCore
=
map
.
getString
(
"comparisonCore"
);
String
q
=
map
.
getString
(
"q"
);
String
fq
=
map
.
getString
(
"fq"
);
String
jobClassName
=
map
.
getString
(
"jobClassName"
);
String
jobGroupName
=
map
.
getString
(
"jobGroupName"
);
//根据数据源,查询条件,过滤条件查询solr begin
//数据源必填
solrDataSetRedis
(
"sourcesolrdata"
,
core
,
q
,
fq
,
jobClassName
,
jobGroupName
);
//根据数据源,比对源,查询条件,过滤条件查询solr end
//根据比对数据源,查询条件,过滤条件查询solr begin
//比对数据源不必填
if
(!
""
.
equals
(
comparisonCore
)&&
comparisonCore
!=
null
){
solrDataSetRedis
(
"comparisonsolrdata"
,
comparisonCore
,
q
,
fq
,
jobClassName
,
jobGroupName
);
}
//根据比对数据源,比对源,查询条件,过滤条件查询solr end
}
public
void
solrDataSetRedis
(
String
dataSource
,
String
core
,
String
q
,
String
fq
,
String
jobClassName
,
String
jobGroupName
){
RedisUtil
redis
=
new
RedisUtil
();
Properties
properties
=
propertiesUtil
.
propertiesUtil
(
"solr.properties"
);
String
sourcesolrdata
=
properties
.
getProperty
(
dataSource
);
HttpSolrClient
client
=
new
HttpSolrClient
(
sourcesolrdata
);
SolrQuery
params
=
new
SolrQuery
();
// 查询条件
if
(
q
==
null
||
""
.
equals
(
q
))
{
params
.
set
(
"q"
,
"*:*"
);
//查询字符串,必须的
}
else
{
params
.
set
(
"q"
,
q
);
//暂时写死,查询字符串,必须的
}
// fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
if
(
fq
!=
null
&&
!
""
.
equals
(
fq
))
{
params
.
set
(
"fq"
,
fq
);
}
QueryResponse
queryResponse
=
null
;
try
{
queryResponse
=
client
.
query
(
core
,
params
);
}
catch
(
SolrServerException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
SolrDocumentList
results
=
queryResponse
.
getResults
();
String
id
=
""
;
for
(
SolrDocument
solrDocument
:
results
)
{
id
+=
(
String
)
solrDocument
.
getFieldValue
(
"ID"
)+
","
;
//这边是获取solr上有存储的字段,也就是我们在schema.xml文件里配置的field标签的stored属性,=true就会存储在solr服务器上,因为我的schema.xml只配置id的stored=true,所以这边我先通过获取id,在通过id去数据库获取具体的新闻信息
}
// 数量,分页用
long
total
=
results
.
getNumFound
();
// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理),itaem实例里的数据总数
try
{
int
totalCount
=
new
Long
(
total
).
intValue
();
int
pageNum
=
totalCount
/
10
;
if
(
totalCount
%
10
!=
0
)
{
pageNum
++;
}
for
(
int
i
=
2
;
i
<=
pageNum
;
i
++)
{
if
(
i
==
1
)
{
//page是页数,首页起始行数用(页数-1*10)(0,10),第二页起始行数用(页数-1*10)+1:(11,20)
params
.
setStart
((
i
-
1
)
*
10
);
}
else
{
params
.
setStart
((
i
-
1
)
*
10
);
}
params
.
setRows
(
10
);
//每页显示10条
queryResponse
=
client
.
query
(
core
,
params
);
SolrDocumentList
resultss
=
queryResponse
.
getResults
();
for
(
SolrDocument
solrDocument
:
resultss
)
{
id
+=
(
String
)
solrDocument
.
getFieldValue
(
"ID"
)+
","
;
//这边是获取solr上有存储的字段,也就是我们在schema.xml文件里配置的field标签的stored属性,=true就会存储在solr服务器上,因为我的schema.xml只配置id的stored=true,所以这边我先通过获取id,在通过id去数据库获取具体的新闻信息
}
}
if
(!
""
.
equals
(
id
)&&
id
!=
null
){
id
=
id
.
substring
(
0
,
id
.
length
()
-
1
);
redisUtil
.
hmSet
(
jobClassName
+
"-"
+
jobGroupName
+
"-"
+
dataSource
,
core
,
id
);
}
System
.
out
.
println
(
id
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
@Async
(
"taskExecutor"
)
public
Future
<
String
>
doReturn
(
SolrDocumentList
results
){
String
id
=
""
;
try
{
// 这个方法需要调用500毫秒
Thread
.
sleep
(
500
);
for
(
SolrDocument
solrDocument
:
results
)
{
id
+=
(
String
)
solrDocument
.
getFieldValue
(
"ID"
)+
","
;
//这边是获取solr上有存储的字段,也就是我们在schema.xml文件里配置的field标签的stored属性,=true就会存储在solr服务器上,因为我的schema.xml只配置id的stored=true,所以这边我先通过获取id,在通过id去数据库获取具体的新闻信息
}
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
// 消息汇总
if
(!
""
.
equals
(
id
)){
id
=
id
.
substring
(
0
,
id
.
length
()
-
1
);
}
return
new
AsyncResult
<>(
String
.
format
(
"{%s}"
,
id
));
//调用
// Future<String> idFuture= doReturn(results);
//String ids="";
// ids=idFuture.get();
}
}
src/main/java/com/cc/solr/service/CompareTaskService.java
View file @
cf8516c9
...
...
@@ -15,5 +15,6 @@ public interface CompareTaskService {
ResultMap
taskAll
(
CompareTask
task
)
throws
IOException
;
XzxtRestResult
saveTask
(
CompareTask
task
);
XzxtRestResult
updateTaskById
(
String
id
,
String
status
);
}
src/main/java/com/cc/solr/service/serviceimpl/CompareTaskServiceImpl.java
View file @
cf8516c9
...
...
@@ -5,6 +5,7 @@ import com.cc.solr.entity.CompareTask;
import
com.cc.solr.mapper.CompareTaskMapper
;
import
com.cc.solr.service.CompareTaskService
;
import
com.cc.solr.util.KeyUtil
;
import
com.cc.solr.util.RedisUtil
;
import
com.cc.solr.util.ResultMap
;
import
com.cc.solr.util.XzxtRestResult
;
import
org.slf4j.Logger
;
...
...
@@ -24,7 +25,6 @@ public class CompareTaskServiceImpl implements CompareTaskService {
@Resource
private
CompareTaskMapper
taskMapper
;
@Override
public
ResultMap
taskAll
(
CompareTask
task
)
throws
IOException
{
List
<
CompareTask
>
tasklist
=
taskMapper
.
selectPageList
(
task
);
...
...
@@ -38,7 +38,6 @@ public class CompareTaskServiceImpl implements CompareTaskService {
return
resultMap
;
}
@Override
public
XzxtRestResult
saveTask
(
CompareTask
task
)
{
String
id
=
KeyUtil
.
getUniqueKey
(
"RW"
);
...
...
src/main/java/com/cc/solr/util/MyJobFactory.java
0 → 100644
View file @
cf8516c9
package
com
.
cc
.
solr
.
util
;
import
org.quartz.spi.TriggerFiredBundle
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.config.AutowireCapableBeanFactory
;
import
org.springframework.scheduling.quartz.SpringBeanJobFactory
;
public
class
MyJobFactory
extends
SpringBeanJobFactory
{
@Autowired
private
AutowireCapableBeanFactory
capableBeanFactory
;
@Override
protected
Object
createJobInstance
(
TriggerFiredBundle
bundle
)
throws
Exception
{
//调用父类的方法
Object
jobInstance
=
super
.
createJobInstance
(
bundle
);
//进行注入
capableBeanFactory
.
autowireBean
(
jobInstance
);
return
jobInstance
;
}
}
\ No newline at end of file
src/main/java/com/cc/solr/util/RedisUtil.java
View file @
cf8516c9
...
...
@@ -104,8 +104,8 @@ public class RedisUtil {
* @param hashKey
* @param value
*/
public
void
hmSet
(
String
key
,
Object
hashKey
,
Object
value
){
HashOperations
<
String
,
Object
,
Object
>
hash
=
redisTemplate
.
opsForHash
();
public
void
hmSet
(
String
key
,
String
hashKey
,
String
value
){
HashOperations
<
String
,
String
,
String
>
hash
=
redisTemplate
.
opsForHash
();
hash
.
put
(
key
,
hashKey
,
value
);
}
...
...
@@ -184,4 +184,12 @@ public class RedisUtil {
ZSetOperations
<
String
,
Object
>
zset
=
redisTemplate
.
opsForZSet
();
return
zset
.
rangeByScore
(
key
,
scoure
,
scoure1
);
}
public
static
void
main
(
String
[]
args
){
RedisUtil
t
=
new
RedisUtil
();
// t.hmSet("chent","test","123");
t
.
set
(
"4"
,
"4"
);
System
.
out
.
println
(
"-------------"
);
}
}
src/main/resources/solr.properties
View file @
cf8516c9
...
...
@@ -10,6 +10,8 @@ comparisonsolrdatahome=tbstasj,tbstasj,tbstasj,tbstasj
#-------mobam---------------------------------------------------------------------------------------
#TB_ST_ASJ
core
=
tbstasj,TB_ST_RY
core
=
tbstasj,TB_ST_RY
,TB_XW_BA,TB_ST_RY_SYFWBZH
tbstasj
=
\u6848\u
4E8B
\u
4EF6
\u
7F16
\u
53F7:ID,
\u6848\u
4EF6
\u
540D
\u
79F0:AJMC,
\u6848\u
4EF6
\u
7C7B
\u
522B:AJLBDM
TB_ST_RY
=
\u
4EBA
\u5458\u
7F16
\u
53F7:ID,
\u
59D3
\u
540D:XM,
\u6027\u
522B:XBDM
TB_XW_BA
=
\u
4EBA
\u5458\u
7F16
\u
53F7:BAR_ASJXGRYBH,
\u
62A5
\u6848\u5730\u
70B9
\u
884C
\u
653F
\u
533A
\u5212
:BADD_XZQHDM
TB_ST_RY_SYFWBZH
=
\u
4EBA
\u5458\u
7F16
\u
53F7:ASJXGRYBH,
\u
670D
\u
52A1
\u6807\u
8BC6
\u
53F7:SYFWBZH_FWBZH_FWBZH
src/main/resources/templates/comparisonResultList.html
View file @
cf8516c9
...
...
@@ -67,30 +67,6 @@
<!-- 右侧主体开始 -->
<div
class=
"page-content"
>
<div
class=
"content"
>
<!-- <label class="layui-form-label l15" style="padding-right: 0;">数据源:</label>
<div class="layui-input-block" style="float:left;margin-left:0;">
<select name="core" lay-verify="" id="core" style="height:30px;width:200px;" class="h30">
</select>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15" style="width:100px;">查询字符串:</label>
<div class="layui-input-inline">
<input type="text" name="q" id="q" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15">过滤查询:</label>
<div class="layui-input-inline">
<input type="text" name="fq" id="fq" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal queryList" style="margin-left: 20px;">查询</button>
<button class="layui-btn layui-btn-normal clear" style="margin-left: 20px;">清空</button>
</div>-->
<!--查询条件-->
<div
>
<table
style=
"width:100%;border-collapse: collapse;text-align:left;"
class=
"tablec"
>
...
...
@@ -104,7 +80,7 @@
</select></td>
<td
style=
"width:10%;"
class=
"ar"
>
比对数据源:
</td>
<td
>
<select
name=
"comparisonCore"
lay-verify=
""
id=
"comparisonCore"
style=
"height:30px;width:200px;"
class=
"h30 bgn"
>
<option
value=
""
></option>
</select></td>
</tr>
<tr
style=
"line-height:40px"
>
...
...
@@ -116,6 +92,7 @@
<select
name=
"jobClassName"
lay-verify=
""
id=
"jobClassName"
style=
"height:30px;width:200px;"
class=
"h30 bgn"
>
<option
value=
"com.cc.solr.job.NewJob"
>
NewJob
</option>
<option
value=
"com.cc.solr.job.HelloJob"
>
HelloJob
</option>
<option
value=
"com.cc.solr.job.SolrDataJob"
>
SolrDataJob
</option>
</select>
</td>
...
...
@@ -124,7 +101,7 @@
<option
value=
"0 */1 * * * ?"
>
每隔1分钟执行一次
</option>
<option
value=
"0 0 23 * * ?"
>
每天23点执行一次
</option>
<option
value=
"0 0 1 1 * ?"
>
每月1号凌晨1点执行一次
</option>
<option
value=
"0 0 1 ? * L"
>
每周星期天凌晨1点
实
行一次
</option>
<option
value=
"0 0 1 ? * L"
>
每周星期天凌晨1点
执
行一次
</option>
</select></td>
</tr>
<tr
style=
"line-height:30px"
>
...
...
@@ -177,6 +154,12 @@
{{
#
}
}}
</script>
<script
type=
"text/html"
id=
"barDemo2"
>
<
a
class
=
"layui-btn layui-btn-xs"
lay
-
event
=
"coreListShow"
>
数据源结果
<
/a
>
{{
#
if
(
d
.
comparisonCore
!=
null
)
{
}}
<
a
class
=
"layui-btn layui-btn-xs"
lay
-
event
=
"comparisonCoreListShow"
>
比对源结果
<
/a
>
{{
#
}
}}
</script>
<script>
layui
.
use
(
'table'
,
function
()
{
var
table
=
layui
.
table
;
...
...
@@ -196,27 +179,24 @@
});
}
});
//end
//初始化加载table
tableIns
=
table
.
render
({
elem
:
'#test'
,
url
:
'comparisonresult/compareTaskList'
,
method
:
'POST'
,
toolbar
:
'#toolbarDemo'
,
title
:
'比对结果表'
,
page
:
true
,
limit
:
10
,
cols
:
[
[
{
field
:
'id'
,
title
:
'任务编号'
,
align
:
'center'
,
width
:
'20%'
,
edit
:
'text'
}
,{
field
:
'taskName'
,
title
:
'任务名称'
,
align
:
'center'
,
width
:
'15%'
,
edit
:
'text'
}
,{
field
:
'job_name'
,
title
:
'任务类名'
,
align
:
'center'
,
width
:
'15%'
,
edit
:
'text'
}
,{
field
:
'job_group'
,
title
:
'任务分组'
,
align
:
'center'
,
width
:
'15%'
,
edit
:
'text'
}
,{
field
:
'status'
,
title
:
'状态'
,
align
:
'center'
,
toolbar
:
'#statusDemo'
,
width
:
'10%'
,
edit
:
'text'
}
,{
field
:
'right'
,
title
:
'操作'
,
align
:
'center'
,
toolbar
:
'#barDemo1'
,
width
:
'25%'
}
,{
field
:
'job_name'
,
title
:
'任务类名'
,
align
:
'center'
,
width
:
'20%'
,
edit
:
'text'
}
,{
field
:
'job_group'
,
title
:
'任务分组'
,
align
:
'center'
,
width
:
'10%'
,
edit
:
'text'
}
,{
field
:
'status'
,
title
:
'状态'
,
align
:
'center'
,
toolbar
:
'#statusDemo'
,
width
:
'5%'
,
edit
:
'text'
}
,{
field
:
'right'
,
title
:
'操作'
,
align
:
'center'
,
toolbar
:
'#barDemo1'
,
width
:
'15%'
}
,{
field
:
'right'
,
title
:
'结果'
,
align
:
'center'
,
toolbar
:
'#barDemo2'
,
width
:
'15%'
}
]
]
});
...
...
@@ -232,6 +212,16 @@
var
jobClassName
=
cheNull
(
$
(
'#jobClassName'
).
val
());
var
jobGroupName
=
cheNull
(
$
(
'#jobGroupName'
).
val
());
var
cronExpression
=
cheNull
(
$
(
'#cronExpression'
).
val
());
if
(
taskName
==
null
||
taskName
==
""
){
layer
.
msg
(
"任务名称不能为空"
);
return
;
}
if
(
jobGroupName
==
null
||
jobGroupName
==
""
){
layer
.
msg
(
"任务分组不能为空"
);
return
;
}
//保存任务
$
.
ajax
({
url
:
'job/addjob'
,
...
...
@@ -254,12 +244,7 @@
}
});
//保存任务
});
//监听行工具事件
table
.
on
(
'tool(test)'
,
function
(
obj
){
var
data
=
obj
.
data
;
...
...
@@ -380,6 +365,34 @@
}
});
}
else
if
(
obj
.
event
===
'coreListShow'
){
var
url
=
"comparisonresult/toCoreResultList?jobClassName="
+
data
.
job_name
+
"&jobGroupName="
+
data
.
job_group
+
"&core="
+
data
.
core
+
"&dataSource=sourcesolrdata"
;
layer
.
open
({
type
:
2
,
title
:
'数据源结果列表'
,
maxmin
:
false
,
moveOut
:
true
,
closeBtn
:
2
,
shadeClose
:
true
,
//点击遮罩关闭层
area
:
[
'1100px'
,
'600px'
],
tipsMore
:
true
,
content
:
url
});
}
else
if
(
obj
.
event
===
'comparisonCoreListShow'
){
var
url
=
"comparisonresult/toCoreResultList?jobClassName="
+
data
.
job_name
+
"&jobGroupName="
+
data
.
job_group
+
"&core="
+
data
.
comparisonCore
+
"&dataSource=comparisonsolrdata"
;
layer
.
open
({
type
:
2
,
title
:
'数据源结果列表'
,
maxmin
:
false
,
moveOut
:
true
,
closeBtn
:
2
,
shadeClose
:
true
,
//点击遮罩关闭层
area
:
[
'1100px'
,
'600px'
],
tipsMore
:
true
,
content
:
url
});
}
});
...
...
src/main/resources/templates/coreResultList.html
0 → 100644
View file @
cf8516c9
<!DOCTYPE html>
<html
lang=
"en"
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"utf-8"
>
<title>
数据源结果列表
</title>
<meta
name=
"renderer"
content=
"webkit"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, maximum-scale=1"
>
<link
rel=
"stylesheet"
href=
"/css/xadmin.css"
>
<link
rel=
"shortcut icon"
href=
"favicon.ico"
type=
"image/x-icon"
/>
<link
rel=
"stylesheet"
href=
"/css/font.css"
>
<link
rel=
"stylesheet"
href=
"/fenye/fenye.css"
media=
"all"
>
<link
rel=
"stylesheet"
href=
"/fenye/font-awesome.min.css"
media=
"all"
>
<script
type=
"text/javascript"
src=
"/jquery/jquery.min.js"
></script>
<link
rel=
"stylesheet"
href=
"/layui/css/layui.css"
media=
"all"
>
<script
type=
"text/javascript"
src=
"/js/xadmin.js"
></script>
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
<div
class=
"wrapper"
>
<!-- 右侧主体开始 -->
<div
class=
"page-content"
>
<div
class=
"content"
>
<table
class=
"layui-hide"
id=
"test"
lay-filter=
"test"
width=
"98%"
></table>
</div>
</div>
<!-- 右侧主体结束 -->
</div>
<script
src=
"/layui/layui.js"
charset=
"utf-8"
></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui
.
use
(
'table'
,
function
(){
var
redisDataInfo
=
'[[${redisDataInfo}]]'
;
//使用Thymeleaf取值
var
table
=
layui
.
table
;
//初始化页面查询列
$
.
ajax
({
url
:
'/sourcedata/getCols'
,
async
:
false
,
// 注意此处需要同步,因为先绑定表头,才能绑定数据
type
:
"POST"
,
data
:{
selCore
:
'[[${redisDataInfo.core}]]'
},
dataType
:
"json"
,
success
:
function
(
jsonObj
)
{
var
columnsAll
=
new
Array
();
//如果返回的数据不为空,则添加遍历该数据集合
if
(
jsonObj
.
length
>
0
)
{
for
(
var
i
=
0
;
i
<
jsonObj
.
length
;
i
++
)
{
//debugger;//把返回的数据封装到一个对象中
var
col
=
{}
col
[
'title'
]
=
jsonObj
[
i
].
title
;
col
[
'field'
]
=
jsonObj
[
i
].
field
;
col
[
'align'
]
=
'center'
;
col
[
'sort'
]
=
true
;
columnsAll
.
push
(
col
);
}
//初始化加载table
tableIns
=
table
.
render
({
elem
:
'#test'
,
url
:
'/comparisonresult/getCoreResultList'
,
method
:
'POST'
,
title
:
'结果列表'
,
page
:
true
,
limit
:
10
,
cols
:
[
columnsAll
]
,
where
:
{
//查询条件
jobClassName
:
'[[${redisDataInfo.jobClassName}]]'
,
jobGroupName
:
'[[${redisDataInfo.jobGroupName}]]'
,
core
:
'[[${redisDataInfo.core}]]'
,
dataSource
:
'[[${redisDataInfo.dataSource}]]'
}
});
}
}
});
});
</script>
</body>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment