|
|
|
@ -1,16 +1,13 @@ |
|
|
|
package com.project.milvus.application.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.util.RandomUtil; |
|
|
|
import com.project.base.config.CustomIdGenerator; |
|
|
|
import com.project.base.domain.exception.MissingParameterException; |
|
|
|
import com.project.milvus.application.MilvusApplicationService; |
|
|
|
import com.project.milvus.domain.dto.TitleVector; |
|
|
|
import com.project.milvus.domain.service.CheckMilvusDomainService; |
|
|
|
import com.project.milvus.domain.service.MilvusDemoService; |
|
|
|
import com.project.question.domain.dto.QuestionDTO; |
|
|
|
import com.project.question.domain.entity.QuestionEntity; |
|
|
|
import com.project.question.domain.service.QuestionBaseService; |
|
|
|
import com.project.question.domain.service.SaveQuestionDomainService; |
|
|
|
import io.milvus.v2.service.vector.response.SearchResp; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.codec.digest.DigestUtils; |
|
|
|
@ -35,7 +32,7 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
|
@Autowired |
|
|
|
private RedissonClient redissonClient; |
|
|
|
@Autowired |
|
|
|
private QuestionBaseService questionBaseService; |
|
|
|
private SaveQuestionDomainService saveQuestionDomainService; |
|
|
|
|
|
|
|
|
|
|
|
//相似度阈值
|
|
|
|
@ -83,14 +80,14 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
|
} |
|
|
|
|
|
|
|
//保存题目到数据库
|
|
|
|
QuestionEntity questionEntity = buildQuestionEntity(title); |
|
|
|
questionBaseService.save(questionEntity); |
|
|
|
QuestionDTO questionDTO = buildQuestionDTO(title); |
|
|
|
questionDTO = saveQuestionDomainService.save(questionDTO).getData(); |
|
|
|
|
|
|
|
//保存向量数据到 Milvus
|
|
|
|
title.setId(questionEntity.getId()); |
|
|
|
title.setId(questionDTO.getId()); |
|
|
|
milvusDemoService.insertRecord(title); |
|
|
|
|
|
|
|
}catch (InterruptedException e) { |
|
|
|
}catch (Exception e) { |
|
|
|
Thread.currentThread().interrupt(); |
|
|
|
throw new RuntimeException("获取锁被中断", e); |
|
|
|
} finally { |
|
|
|
@ -101,22 +98,18 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 构建题目实体 |
|
|
|
* 构建题目DTO |
|
|
|
*/ |
|
|
|
private QuestionEntity buildQuestionEntity(TitleVector title) { |
|
|
|
QuestionEntity questionEntity = new QuestionEntity(); |
|
|
|
questionEntity.setSourceType(0); // 0-单 KP 出题
|
|
|
|
questionEntity.setUseStatus(false); // 未使用
|
|
|
|
questionEntity.setKpIdList(title.getPointIdsList()); |
|
|
|
questionEntity.setUniqueHash(title.getUniqueHash()); |
|
|
|
questionEntity.setQuestionType(title.QuestionDetailDTO.getType()); |
|
|
|
|
|
|
|
// 构建题目详情
|
|
|
|
QuestionEntity.QuestionDetail detail = new QuestionEntity.QuestionDetail(); |
|
|
|
BeanUtils.copyProperties(title.QuestionDetailDTO, detail); |
|
|
|
questionEntity.setQuestionDetail(detail); |
|
|
|
|
|
|
|
return questionEntity; |
|
|
|
private QuestionDTO buildQuestionDTO(TitleVector title) { |
|
|
|
QuestionDTO questionDTO = new QuestionDTO(); |
|
|
|
questionDTO.setUseStatus(false); |
|
|
|
questionDTO.setKpIdList(title.getPointIdsList()); |
|
|
|
questionDTO.setUniqueHash(title.getUniqueHash()); |
|
|
|
questionDTO.setClusterId(title.getClusterId()); |
|
|
|
questionDTO.setQuestionType(title.QuestionDetailDTO.getType()); |
|
|
|
questionDTO.setQuestionDetailDTO(title.QuestionDetailDTO); |
|
|
|
|
|
|
|
return questionDTO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|