diff --git a/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java b/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java index 392476b8..fcd0435b 100644 --- a/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java +++ b/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java @@ -53,9 +53,8 @@ public class SimilarityUtil { qaSimilarityQuestionAnswer.setQuestionId(String.valueOf(document.getMetadata().get("questionId"))); qaSimilarityQuestionAnswer.setDictId(String.valueOf(document.getMetadata().get("dictId"))); qaSimilarityQuestionAnswer.setLibraryQuestionId(String.valueOf(document.getMetadata().get("libraryQuestionId"))); - // 1- 可以使数据进行排序,相似度越高,数值越大(redis相似度给的数据是越小相似度越高) - // -0.25目的是使数据趋近于中间,相似度不要太大(太大也不好调整),以使我们数据和张总之前提供的方法相似度差异稍小一点,但是不能小于0,如果小于0,取一个较大的值 - double score = Math.max(0, 1 - Double.parseDouble(String.valueOf(document.getMetadata().get("vector_score"))) - 0.25); + // 计算相似度 + double score = computeScore(document); qaSimilarityQuestionAnswer.setMatchScore(score); return qaSimilarityQuestionAnswer; // 排序,降序,取最高的 @@ -66,6 +65,18 @@ public class SimilarityUtil { } } + /** + * 计算相似度得分 + * + * @param document 文档 + * @return 得分 + */ + public static Double computeScore(Document document) { + // 1- 可以使数据进行排序,相似度越高,数值越大(redis相似度给的数据是越小相似度越高) + // -0.25目的是使数据趋近于中间,相似度不要太大(太大也不好调整),以使我们数据和张总之前提供的方法相似度差异稍小一点,但是不能小于0,如果小于0,取一个较大的值 + return Math.max(0, 1 - Double.parseDouble(String.valueOf(document.getMetadata().get("vector_score"))) - 0.25); + } + /** * 相似度比较,找出所有的 *