|
|
@ -25,8 +25,6 @@ import java.util.stream.Collectors; |
|
|
@Service |
|
|
@Service |
|
|
@Slf4j |
|
|
@Slf4j |
|
|
public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
@Autowired |
|
|
|
|
|
private MilvusDemoService milvusDemoService; |
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
private CheckMilvusDomainService checkMilvusDomainService; |
|
|
private CheckMilvusDomainService checkMilvusDomainService; |
|
|
@Autowired |
|
|
@Autowired |
|
|
@ -42,7 +40,9 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
@Override |
|
|
@Override |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
public void insertTitle(TitleVector title) { |
|
|
public void insertTitle(TitleVector title) { |
|
|
// 1. 基础参数校验(在锁外,快速失败)
|
|
|
log.info(">>> [回调处理] 开始持久化题目{},考试任务[{}]",title.QuestionDetailDTO, title.getTaskId()); |
|
|
|
|
|
|
|
|
|
|
|
// 基础参数校验(在锁外,快速失败)
|
|
|
checkMilvusDomainService.checkBasic(title); |
|
|
checkMilvusDomainService.checkBasic(title); |
|
|
|
|
|
|
|
|
String lockKey = buildLockKey(title.getTaskKpIdsList()); |
|
|
String lockKey = buildLockKey(title.getTaskKpIdsList()); |
|
|
@ -65,27 +65,26 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
if (!locked) { |
|
|
if (!locked) { |
|
|
throw new RuntimeException("当前知识点正在处理,请稍后再试"); |
|
|
throw new RuntimeException("当前知识点正在处理,请稍后再试"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//唯一性校验
|
|
|
//唯一性校验
|
|
|
checkMilvusDomainService.checkUnique(title); |
|
|
checkMilvusDomainService.checkUnique(title); |
|
|
|
|
|
|
|
|
//比较相似度
|
|
|
//比较相似度
|
|
|
List<List<SearchResp.SearchResult>> query = milvusDemoService.query(title); |
|
|
// List<List<SearchResp.SearchResult>> query = milvusDemoService.query(title);
|
|
|
if (CollectionUtil.isNotEmpty(query) && CollectionUtil.isNotEmpty(query.get(0))) { |
|
|
// if (CollectionUtil.isNotEmpty(query) && CollectionUtil.isNotEmpty(query.get(0))) {
|
|
|
SearchResp.SearchResult searchResult = query.get(0).get(0); |
|
|
// SearchResp.SearchResult searchResult = query.get(0).get(0);
|
|
|
Float score = searchResult.getScore(); |
|
|
// Float score = searchResult.getScore();
|
|
|
if(score.compareTo(SIMILARITY_THRESHOLD) > 0){ |
|
|
// if(score.compareTo(SIMILARITY_THRESHOLD) > 0){
|
|
|
throw new MissingParameterException("题目相似度"+ score +",超过阈值"); |
|
|
// throw new MissingParameterException("题目相似度"+ score +",超过阈值");
|
|
|
} |
|
|
// }
|
|
|
} |
|
|
// }
|
|
|
|
|
|
|
|
|
//保存题目到数据库
|
|
|
//保存题目到数据库
|
|
|
QuestionDTO questionDTO = buildQuestionDTO(title); |
|
|
QuestionDTO questionDTO = buildQuestionDTO(title); |
|
|
questionDTO = saveQuestionDomainService.save(questionDTO).getData(); |
|
|
questionDTO = saveQuestionDomainService.save(questionDTO).getData(); |
|
|
|
|
|
|
|
|
//保存向量数据到 Milvus
|
|
|
//保存向量数据到 Milvus
|
|
|
title.setId(questionDTO.getId()); |
|
|
// title.setId(questionDTO.getId());
|
|
|
milvusDemoService.insertRecord(title); |
|
|
// milvusDemoService.insertRecord(title);
|
|
|
|
|
|
|
|
|
}catch (InterruptedException e) { |
|
|
}catch (InterruptedException e) { |
|
|
Thread.currentThread().interrupt(); |
|
|
Thread.currentThread().interrupt(); |
|
|
|