|
@@ -237,6 +237,8 @@ namespace wispro.sp.utility
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public double TextSimilarity { get; set; }
|
|
|
|
+
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 原文档路径
|
|
/// 原文档路径
|
|
@@ -301,18 +303,17 @@ namespace wispro.sp.utility
|
|
result.newWordCount = newtext.Length;
|
|
result.newWordCount = newtext.Length;
|
|
|
|
|
|
var diff = differ.CreateCharacterDiffs(oldtext, newtext, true);
|
|
var diff = differ.CreateCharacterDiffs(oldtext, newtext, true);
|
|
- result.EditCount = diff.DiffBlocks.Count;
|
|
|
|
|
|
+ //result.EditCount = diff.DiffBlocks.Count;
|
|
|
|
|
|
- int iDeff = 0;
|
|
|
|
int lastPos = 0;
|
|
int lastPos = 0;
|
|
|
|
|
|
string _CompareResultString = "";
|
|
string _CompareResultString = "";
|
|
string lastResult = "";
|
|
string lastResult = "";
|
|
|
|
+ List<string> ModifyList = new List<string>();
|
|
foreach (var change in diff.DiffBlocks)
|
|
foreach (var change in diff.DiffBlocks)
|
|
{
|
|
{
|
|
- iDeff += change.DeleteCountA + change.InsertCountB;
|
|
|
|
- result.DeleteCount += change.DeleteCountA;
|
|
|
|
- result.InsertCount += change.InsertCountB;
|
|
|
|
|
|
+ string strModifyStr = "";
|
|
|
|
+
|
|
|
|
|
|
lastResult += oldtext.Substring(lastPos, change.DeleteStartA - lastPos);
|
|
lastResult += oldtext.Substring(lastPos, change.DeleteStartA - lastPos);
|
|
_CompareResultString += oldtext.Substring(lastPos, change.DeleteStartA - lastPos);
|
|
_CompareResultString += oldtext.Substring(lastPos, change.DeleteStartA - lastPos);
|
|
@@ -321,14 +322,25 @@ namespace wispro.sp.utility
|
|
|
|
|
|
if (change.DeleteCountA > 0)
|
|
if (change.DeleteCountA > 0)
|
|
{
|
|
{
|
|
|
|
+ strModifyStr += $"<strike style=\"text-decoration: line-through; color: red;\">{oldtext.Substring(change.DeleteStartA, change.DeleteCountA)}</strike>";
|
|
_CompareResultString += $"<strike style=\"text-decoration: line-through; color: red;\">{oldtext.Substring(change.DeleteStartA, change.DeleteCountA)}</strike>";
|
|
_CompareResultString += $"<strike style=\"text-decoration: line-through; color: red;\">{oldtext.Substring(change.DeleteStartA, change.DeleteCountA)}</strike>";
|
|
}
|
|
}
|
|
|
|
|
|
if (change.InsertCountB > 0)
|
|
if (change.InsertCountB > 0)
|
|
{
|
|
{
|
|
|
|
+ strModifyStr += $"<u style=\"text-decoration: underline; color: blue;\">{newtext.Substring(change.InsertStartB, change.InsertCountB)}</u>";
|
|
_CompareResultString += $"<u style=\"text-decoration: underline; color: blue;\">{newtext.Substring(change.InsertStartB, change.InsertCountB)}</u>";
|
|
_CompareResultString += $"<u style=\"text-decoration: underline; color: blue;\">{newtext.Substring(change.InsertStartB, change.InsertCountB)}</u>";
|
|
lastResult += newtext.Substring(change.InsertStartB, change.InsertCountB);
|
|
lastResult += newtext.Substring(change.InsertStartB, change.InsertCountB);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if(!ModifyList.Contains(strModifyStr))
|
|
|
|
+ {
|
|
|
|
+ ModifyList.Add(strModifyStr);
|
|
|
|
+ result.DeleteCount += change.DeleteCountA;
|
|
|
|
+ result.InsertCount += change.InsertCountB;
|
|
|
|
+ result.EditCount += 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
lastResult += oldtext.Substring(lastPos);
|
|
lastResult += oldtext.Substring(lastPos);
|
|
@@ -337,6 +349,8 @@ namespace wispro.sp.utility
|
|
|
|
|
|
result.CompareResultString = _CompareResultString;
|
|
result.CompareResultString = _CompareResultString;
|
|
|
|
|
|
|
|
+ result.TextSimilarity = CosineSimilarity.Calculate(oldtext, newtext);
|
|
|
|
+
|
|
return result;
|
|
return result;
|
|
|
|
|
|
}
|
|
}
|