Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
5386b104
提交
5386b104
authored
11月 07, 2024
作者:
yanxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加es到向量库数据同步任务
上级
72916c47
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
165 行增加
和
1 行删除
+165
-1
WebMvcConfig.java
...va/com/zzsn/knowbase/config/interceptor/WebMvcConfig.java
+1
-1
SyncController.java
...ain/java/com/zzsn/knowbase/controller/SyncController.java
+74
-0
IKnowledgeService.java
...ain/java/com/zzsn/knowbase/service/IKnowledgeService.java
+23
-0
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+67
-0
没有找到文件。
src/main/java/com/zzsn/knowbase/config/interceptor/WebMvcConfig.java
浏览文件 @
5386b104
...
...
@@ -15,6 +15,6 @@ public class WebMvcConfig implements WebMvcConfigurer {
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
// 添加自定义拦截器,拦截所有路径
registry
.
addInterceptor
(
new
KnowInterceptor
()).
addPathPatterns
(
"/**"
);
//
registry.addInterceptor(new KnowInterceptor()).addPathPatterns("/**");
}
}
src/main/java/com/zzsn/knowbase/controller/SyncController.java
0 → 100644
浏览文件 @
5386b104
package
com
.
zzsn
.
knowbase
.
controller
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.zzsn.knowbase.constant.Constants
;
import
com.zzsn.knowbase.entity.*
;
import
com.zzsn.knowbase.service.IKnowledgeService
;
import
com.zzsn.knowbase.service.ILocalFileService
;
import
com.zzsn.knowbase.service.KbKnowledgeProjectService
;
import
com.zzsn.knowbase.util.AuthUtil
;
import
com.zzsn.knowbase.util.ExcelExportUtil
;
import
com.zzsn.knowbase.util.SpringContextUtils
;
import
com.zzsn.knowbase.util.tree.Node
;
import
com.zzsn.knowbase.vo.KnowledgeParam
;
import
com.zzsn.knowbase.vo.KnowledgeVO
;
import
com.zzsn.knowbase.vo.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
org.springframework.web.util.WebUtils
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CompletableFuture
;
/**
* 知识
* @Author: chenshiqiang
* @Version: V1.0
*/
@Api
(
tags
=
"知识"
)
@RestController
@RequestMapping
(
"/api/knowledge/sync"
)
@Slf4j
public
class
SyncController
{
@Autowired
private
IKnowledgeService
knowledgeService
;
@Autowired
private
KbKnowledgeProjectService
knowledgeProjectService
;
@Autowired
private
ILocalFileService
localFileService
;
/**
* es->向量库 数据同步任务
* @param kbKnowledgeId 知识库id
* @param knowledgeProjectId 分组id
* @param startDate 创建时间-开始
* @param endDate 创建时间-结束
* @return
*/
@GetMapping
(
value
=
"/start"
)
public
Result
<?>
start
(
String
id
,
String
kbKnowledgeId
,
String
knowledgeProjectId
,
String
startDate
,
String
endDate
)
{
if
(
StringUtils
.
isNotEmpty
(
id
)){
knowledgeService
.
syncById
(
id
);
return
Result
.
OK
(
"同步成功"
);
}
log
.
info
(
"es->向量库 数据同步任务,参数:{}"
,
kbKnowledgeId
+
" "
+
knowledgeProjectId
+
" "
+
startDate
+
" "
+
endDate
);
List
<
String
>
idList
=
knowledgeService
.
queryIdList
(
kbKnowledgeId
,
knowledgeProjectId
,
startDate
,
endDate
,
100000
);
log
.
info
(
"es->向量库 数据同步任务,待同步数据条数:{}"
,
idList
.
size
());
knowledgeService
.
syncByIds
(
idList
);
return
Result
.
OK
(
idList
.
size
()+
"条数据同步中..."
);
}
}
\ No newline at end of file
src/main/java/com/zzsn/knowbase/service/IKnowledgeService.java
浏览文件 @
5386b104
...
...
@@ -67,4 +67,27 @@ public interface IKnowledgeService {
String
comprocessByName
(
List
<
String
>
list
,
String
filePath
);
List
<
String
>
groupUserList
(
String
kbKnowledgeId
);
/**
* 查询知识库数据id列表
* @param kbKnowledgeId 知识库id
* @param knowledgeProjectId 分组id
* @param startDate 创建时间-开始
* @param endDate 创建时间-结束
* @param size 查询数据条数
* @return
*/
List
<
String
>
queryIdList
(
String
kbKnowledgeId
,
String
knowledgeProjectId
,
String
startDate
,
String
endDate
,
Integer
size
);
/**
* 同步单个
* @param id
*/
void
syncById
(
String
id
);
/**
* 同步多个
* @param idList
*/
void
syncByIds
(
List
<
String
>
idList
);
}
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
5386b104
...
...
@@ -58,6 +58,7 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
...
...
@@ -941,6 +942,72 @@ class KnowledgeServiceImpl implements IKnowledgeService {
return
userIds
;
}
@Override
public
List
<
String
>
queryIdList
(
String
kbKnowledgeId
,
String
knowledgeProjectId
,
String
startDate
,
String
endDate
,
Integer
size
)
{
//分类id列表
List
<
String
>
idList
=
new
ArrayList
<>();
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//设置分页参数
searchSourceBuilder
.
from
(
0
);
searchSourceBuilder
.
size
(
size
);
//仅查询id字段
searchSourceBuilder
.
fetchSource
(
new
String
[]{
"id"
},
null
);
//默认最大数量是10000,设置为true后,显示准确数量
searchSourceBuilder
.
trackTotalHits
(
true
);
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"kbKnowledgeId"
,
Arrays
.
asList
(
kbKnowledgeId
.
split
(
","
))));
if
(
StringUtils
.
isNotEmpty
(
knowledgeProjectId
))
{
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"knowledgeProjectId"
,
Arrays
.
asList
(
knowledgeProjectId
.
split
(
","
))));
}
//时间过滤筛选
if
(
StringUtils
.
isNotBlank
(
startDate
))
{
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"createTime"
).
gte
(
startDate
));
}
if
(
StringUtils
.
isNotBlank
(
endDate
))
{
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"createTime"
).
lte
(
endDate
));
}
boolQuery
.
mustNot
(
QueryBuilders
.
termQuery
(
"deleteFlag"
,
1
));
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
SearchResponse
searchResponse
=
null
;
try
{
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
null
!=
searchResponse
&&
null
!=
searchResponse
.
getHits
())
{
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
for
(
SearchHit
hit
:
searchHits
)
{
idList
.
add
(
String
.
valueOf
(
hit
.
getSourceAsMap
().
get
(
"id"
)));
}
}
return
idList
;
}
@Override
public
void
syncById
(
String
id
)
{
KnowledgeVO
knowledge
=
this
.
getById
(
id
);
if
(
knowledge
!=
null
){
KnowledgeMessage
knowledgeMessage
=
new
KnowledgeMessage
();
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
knowledgeMessage
.
setType
(
knowledge
.
getTypeId
());
produceInfo
.
sendKnowledgeContents
(
knowledgeMessage
);
log
.
info
(
"es->向量库 数据同步,{}:{}"
,
knowledgeMessage
.
getId
(),
knowledgeMessage
.
getTitle
());
}
}
@Async
@Override
public
void
syncByIds
(
List
<
String
>
idList
)
{
for
(
String
id
:
idList
)
{
this
.
syncById
(
id
);
}
}
//导入发布库数据
public
void
importInfo
(
List
<
List
<
String
>>
lists
,
String
kbKnowledgeId
,
String
knowledgeProjectId
,
String
typeId
,
String
createBy
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论