|
|
|
@ -19,9 +19,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Type;
|
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@ -36,6 +37,9 @@ public class MatchToolServiceImpl implements MatchToolService {
|
|
|
|
|
@Value("${matchTool.url}")
|
|
|
|
|
private String matchToolUrl;
|
|
|
|
|
|
|
|
|
|
@Value("${matchTool.scoreThreshold}")
|
|
|
|
|
private String scoreThreshold;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void refreshMatchToolLibrary() {
|
|
|
|
|
// 获取所有的问题
|
|
|
|
@ -60,13 +64,19 @@ public class MatchToolServiceImpl implements MatchToolService {
|
|
|
|
|
}
|
|
|
|
|
// 调用tool服务进行更新操作
|
|
|
|
|
submitRefresh(matchToolQuestionDTOList);
|
|
|
|
|
// 更新完成之后,将数据置为生效
|
|
|
|
|
irKnowledgeService.lambdaUpdate().set(IrKnowledge::getState, 1).in(IrKnowledge::getId, questionLibrary.keySet()).update();
|
|
|
|
|
Set<String> similarKnowledgeIdSet = similarList.stream().map(IrKnowledgeSimilar::getId).collect(Collectors.toSet());
|
|
|
|
|
if (CollUtil.isNotEmpty(similarKnowledgeIdSet)) {
|
|
|
|
|
irKnowledgeSimilarService.lambdaUpdate().set(IrKnowledgeSimilar::getState, 1).in(IrKnowledgeSimilar::getId, similarKnowledgeIdSet).update();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MatchQuestionAnswerDTO> execMatch(String question) {
|
|
|
|
|
log.info("开始调用talkQaSimilarity,问题:{}", question);
|
|
|
|
|
try {
|
|
|
|
|
String post = HttpUtil.post(matchToolUrl + "/matchQuestion", JSONUtil.toJsonStr(new QuestionReqDTO(question)));
|
|
|
|
|
String post = HttpUtil.post(matchToolUrl + "/matchQuestion", JSONUtil.toJsonStr(new QuestionReqDTO(question, Double.valueOf(scoreThreshold))));
|
|
|
|
|
log.info("相似度匹配答案:{}", post);
|
|
|
|
|
TypeReference<GlobalResult<List<MatchQuestionAnswerDTO>>> globalResultTypeReference = new TypeReference<GlobalResult<List<MatchQuestionAnswerDTO>>>() {
|
|
|
|
|
};
|
|
|
|
@ -74,8 +84,11 @@ public class MatchToolServiceImpl implements MatchToolService {
|
|
|
|
|
if (result.getCode() != 200) {
|
|
|
|
|
throw new BusinessException("匹配失败");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result.getData();
|
|
|
|
|
List<MatchQuestionAnswerDTO> data = result.getData();
|
|
|
|
|
if (CollUtil.isEmpty(data)){
|
|
|
|
|
throw new BusinessException("未识别的问题");
|
|
|
|
|
}
|
|
|
|
|
return data;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error("调用talkQaSimilarity error ", e);
|
|
|
|
|
return null;
|
|
|
|
|