Browse Source

字段名称调整

master
luogw 5 days ago
parent
commit
88baf144a9
  1. 5
      src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java
  2. 12
      src/main/java/com/project/milvus/domain/dto/TitleVector.java
  3. 11
      src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java
  4. 4
      src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java

5
src/main/java/com/project/milvus/application/impl/MilvusApplicationServiceImpl.java

@ -45,7 +45,7 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService {
// 1. 基础参数校验(在锁外,快速失败)
checkMilvusDomainService.checkBasic(title);
String lockKey = buildLockKey(title.getPointIdsList());
String lockKey = buildLockKey(title.getAtomIdsList());
RLock lock = redissonClient.getLock(lockKey);
boolean locked = false;
@ -103,11 +103,12 @@ public class MilvusApplicationServiceImpl implements MilvusApplicationService {
private QuestionDTO buildQuestionDTO(TitleVector title) {
QuestionDTO questionDTO = new QuestionDTO();
questionDTO.setUseStatus(false);
questionDTO.setKpIdList(title.getPointIdsList());
questionDTO.setKpIdList(title.getAtomIdsList());
questionDTO.setUniqueHash(title.getUniqueHash());
questionDTO.setClusterId(title.getClusterId());
questionDTO.setQuestionType(title.QuestionDetailDTO.getType());
questionDTO.setQuestionDetailDTO(title.QuestionDetailDTO);
questionDTO.setTaskId(title.getTaskId());
return questionDTO;
}

12
src/main/java/com/project/milvus/domain/dto/TitleVector.java

@ -15,18 +15,20 @@ import java.util.stream.Collectors;
public class TitleVector {
public Long id;
//知识点ID
public List<Long> pointIds;
public List<Long> atomIds;
//题目向量
public List<Float> titleVector;
//题目唯一标识
private String uniqueHash;
//知识点簇
private Long clusterId;
//任务ID
private Long taskId;
//题目内容
public QuestionDTO.QuestionDetailDTO QuestionDetailDTO;
public String getPointIdsHash() {
List<Long> sorted = new ArrayList<>(pointIds);
public String getAtomIdsHash() {
List<Long> sorted = new ArrayList<>(atomIds);
Collections.sort(sorted);
String canonical = sorted.stream()
.map(String::valueOf)
@ -35,8 +37,8 @@ public class TitleVector {
return DigestUtils.md5Hex(canonical);
}
public List<Long> getPointIdsList() {
List<Long> sorted = new ArrayList<>(pointIds);
public List<Long> getAtomIdsList() {
List<Long> sorted = new ArrayList<>(atomIds);
Collections.sort(sorted);
return sorted;
}

11
src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java

@ -38,7 +38,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService {
throw new MissingParameterException("请求参数缺失或格式错误");
}
List<Long> pointIdsList = title.getPointIdsList();
List<Long> pointIdsList = title.getAtomIdsList();
List<Float> titleVectorList = title.getTitleVectorList();
if (CollectionUtil.isEmpty(pointIdsList) || CollectionUtil.isEmpty(titleVectorList)) {
@ -49,6 +49,11 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService {
throw new MissingParameterException("所属知识点簇ID不能为空");
}
if (title.getTaskId() == null){
throw new MissingParameterException("考试任务ID不能为空");
}
if(titleVectorList.size() != 1024){
throw new MissingParameterException("向量格式错误");
}
@ -107,7 +112,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService {
}
public String buildQuestionHash(QuestionDTO.QuestionDetailDTO detailDTO, TitleVector title){
//查询知识点并提取非空的 parseName
List<KnowledgePointEntity> knowledgePointEntities = knowledgePointBaseService.listByIds(title.getPointIdsList());
List<KnowledgePointEntity> knowledgePointEntities = knowledgePointBaseService.listByIds(title.getAtomIdsList());
if (CollectionUtils.isEmpty(knowledgePointEntities)) {
throw new IllegalArgumentException("知识点不存在"); // 空值防护
}
@ -129,7 +134,7 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService {
//生成最终哈希(拆分拼接逻辑,提升可读性;增加分隔符避免字符串拼接歧义)
String rawContent = String.format("%s|%s|%s",
StringUtils.isNotBlank(detailDTO.getQuestionContent()) ? detailDTO.getQuestionContent() : "",
StringUtils.isNotBlank(title.getPointIdsHash()) ? title.getPointIdsHash() : "",
StringUtils.isNotBlank(title.getAtomIdsHash()) ? title.getAtomIdsHash() : "",
DigestUtils.md5Hex(canonicalKnowledgePoints)
);
return DigestUtils.md5Hex(rawContent);

4
src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java

@ -83,7 +83,7 @@ public class MilvusDemoServiceImpl implements MilvusDemoService {
JsonObject vector = new JsonObject();
vector.addProperty("id", title.getId());
vector.addProperty("point_ids", title.getPointIdsHash());
vector.addProperty("point_ids", title.getAtomIdsHash());
vector.add("title_vector", title.getTitleVectorJson());
InsertReq insertReq = InsertReq.builder()
@ -113,7 +113,7 @@ public class MilvusDemoServiceImpl implements MilvusDemoService {
public List<List<SearchResp.SearchResult>> query(TitleVector title){
QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType());
String expr = String.format("point_ids == '%s'", title.getPointIdsHash());
String expr = String.format("point_ids == '%s'", title.getAtomIdsHash());
SearchResp searchReq = client.search(SearchReq.builder()
.collectionName(COLLECTION_NAME+questionTypeEnum.getType())

Loading…
Cancel
Save