feat(82947): 相似度匹配改为条款编号+标题+内容
This commit is contained in:
+8
-4
@@ -171,17 +171,19 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
|
||||
//双重循环找到相似度最高的条款做关联
|
||||
for (int i = 0; i < leftItemList.size(); i++) {
|
||||
String leftTxt = leftItemList.get(i).getItemsText();
|
||||
String leftAllTxt = leftItemList.get(i).getItemsNum() + leftItemList.get(i).getItemsName() + leftItemList.get(i).getItemsText();
|
||||
//初始化 假设未找到相似条目
|
||||
leftItemList.get(i).setTargetStand(-1);
|
||||
//定义初始化的相似度
|
||||
double compareSimilarity = 0.0;
|
||||
if (null != leftTxt && !leftTxt.isEmpty()) {
|
||||
if (null != leftAllTxt && !leftAllTxt.isEmpty()) {
|
||||
for (int j = 0; j < rightItemList.size(); j++) {
|
||||
if(null == rightItemList.get(j).getTargetStand()){
|
||||
rightItemList.get(j).setTargetStand(-1);
|
||||
}
|
||||
String rightTxt = rightItemList.get(j).getItemsText();
|
||||
if (null != rightTxt && !rightTxt.isEmpty()) {
|
||||
String rightAllTxt = rightItemList.get(j).getItemsNum() + rightItemList.get(j).getItemsName() + rightItemList.get(j).getItemsText();
|
||||
if (null != rightAllTxt && !rightAllTxt.isEmpty()) {
|
||||
double similarity = 0;
|
||||
// 使用正则表达式判断是否是纯<img>标签,不以</p>结尾,也不以</table>结尾
|
||||
String leftTxtTrim = leftTxt.trim();
|
||||
@@ -190,11 +192,13 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
|
||||
boolean rightTxtMatches = Pattern.matches("<img[^>]+>(?<!</p>)(?<!</table>)", rightTxtTrim);
|
||||
if (leftTxtMatches && rightTxtMatches){
|
||||
// 如果是纯img标签直接对比内容
|
||||
if (leftTxtTrim.equals(rightTxtTrim)){
|
||||
if (leftTxtTrim.equals(rightTxtTrim)
|
||||
&& Objects.equals(leftItemList.get(i).getItemsNum(), rightItemList.get(j).getItemsNum())
|
||||
&& Objects.equals(leftItemList.get(i).getItemsName(), rightItemList.get(j).getItemsName())){
|
||||
similarity = 1;
|
||||
}
|
||||
}else {
|
||||
similarity = CompHanLPUtils.findSimilarity(leftTxt.trim(), rightTxt.trim());
|
||||
similarity = CompHanLPUtils.findSimilarity(leftAllTxt.trim(), rightAllTxt.trim());
|
||||
}
|
||||
//如果相似度超过0.6 并且该相似度比之前的相似度还高,那么该条款目前相似度最高
|
||||
if (similarity >= 0.6 && compareSimilarity < similarity) {
|
||||
|
||||
Reference in New Issue
Block a user