|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 相似度比较,找出所有的
|
|
|
|
|
*
|
|
|
|
|