|
@@ -19,6 +19,8 @@ namespace frequency
|
|
public long currentIndex;
|
|
public long currentIndex;
|
|
public long totalNum;
|
|
public long totalNum;
|
|
public Dictionary<string, int> finalResult;
|
|
public Dictionary<string, int> finalResult;
|
|
|
|
+ public Dictionary<string, int> originRecord;
|
|
|
|
+ public Dictionary<string, int> targetRecord;
|
|
|
|
|
|
public Form1()
|
|
public Form1()
|
|
{
|
|
{
|
|
@@ -125,25 +127,37 @@ namespace frequency
|
|
// clear target file
|
|
// clear target file
|
|
this.CleanTarget();
|
|
this.CleanTarget();
|
|
|
|
|
|
- // look up
|
|
|
|
- Thread runLoopUp = new Thread(Lookup);
|
|
|
|
- CallBackDelegate cbd = LoopUpCallBack;
|
|
|
|
- runLoopUp.Start(cbd);
|
|
|
|
|
|
+ //foreach (var val in originRecord)
|
|
|
|
+ //{
|
|
|
|
+ // log.D("origin record key: {0} value: {1}", val.Key, val.Value);
|
|
|
|
+ //}
|
|
|
|
|
|
- log.D("Calculate_Click look up success");
|
|
|
|
|
|
+ //foreach(var val in targetRecord)
|
|
|
|
+ //{
|
|
|
|
+ // log.D("target record key: {0} value: {1}", val.Key, val.Value);
|
|
|
|
+ //}
|
|
|
|
|
|
- // write data to file
|
|
|
|
- //this.progress.Text = "导出数据中...";
|
|
|
|
- //this.progress.Refresh();
|
|
|
|
- //this.progressStatus = CAL_EXPORT;
|
|
|
|
|
|
+ //foreach( var val in this.originTextsOrder)
|
|
|
|
+ //{
|
|
|
|
+ // log.D("text order key:{0}", val);
|
|
|
|
+ //}
|
|
|
|
|
|
- //var msg = this.Write2Xlsx(result);
|
|
|
|
- //if ("" != msg)
|
|
|
|
|
|
+ //foreach (var val in this.originTextsInverse)
|
|
//{
|
|
//{
|
|
- // log.E("Calculate_Click write data to xlsx error: {0}", msg);
|
|
|
|
- // return 1;
|
|
|
|
|
|
+ // log.D("text inverse key: {0}", val);
|
|
//}
|
|
//}
|
|
- log.D("Calculate_Click write data to xlsx success");
|
|
|
|
|
|
+
|
|
|
|
+ //foreach(var val in this.targetTexts)
|
|
|
|
+ //{
|
|
|
|
+ // log.D("text target key: {0}", val);
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ // look up
|
|
|
|
+ Thread runLoopUp = new Thread(Lookup);
|
|
|
|
+ CallBackDelegate cbd = LoopUpCallBack;
|
|
|
|
+ runLoopUp.Start(cbd);
|
|
|
|
+
|
|
|
|
+ log.D("Calculate_Click look up success and Calculate_Click write data to xlsx success");
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -199,6 +213,8 @@ namespace frequency
|
|
|
|
|
|
// check
|
|
// check
|
|
int length = 0;
|
|
int length = 0;
|
|
|
|
+ originRecord = new Dictionary<string, int>();
|
|
|
|
+ var appendRecord = new Dictionary<string, bool>();
|
|
for (int i = 0; i < texts.Length; i++)
|
|
for (int i = 0; i < texts.Length; i++)
|
|
{
|
|
{
|
|
var val = texts[i].Trim();
|
|
var val = texts[i].Trim();
|
|
@@ -206,6 +222,13 @@ namespace frequency
|
|
{
|
|
{
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
+ if (appendRecord.ContainsKey(val))
|
|
|
|
+ {
|
|
|
|
+ originRecord[val] = originRecord[val] + 1;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ originRecord[val] = 1;
|
|
|
|
+ appendRecord[val] = true;
|
|
length++;
|
|
length++;
|
|
}
|
|
}
|
|
log.D("ReadOriginText received check text with length: {0}", length);
|
|
log.D("ReadOriginText received check text with length: {0}", length);
|
|
@@ -213,6 +236,7 @@ namespace frequency
|
|
// append
|
|
// append
|
|
var tempTexts = new string[length];
|
|
var tempTexts = new string[length];
|
|
int index = 0;
|
|
int index = 0;
|
|
|
|
+ appendRecord = new Dictionary<string, bool>();
|
|
for (int i = 0; i < texts.Length; i++)
|
|
for (int i = 0; i < texts.Length; i++)
|
|
{
|
|
{
|
|
var val = texts[i].Trim();
|
|
var val = texts[i].Trim();
|
|
@@ -220,6 +244,11 @@ namespace frequency
|
|
{
|
|
{
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
+ if (appendRecord.ContainsKey(val))
|
|
|
|
+ {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ appendRecord[val] = true;
|
|
tempTexts[index++] = texts[i];
|
|
tempTexts[index++] = texts[i];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -233,6 +262,7 @@ namespace frequency
|
|
this.originTextsOrder[index++] = tempTexts[i] + "-" + tempTexts[j];
|
|
this.originTextsOrder[index++] = tempTexts[i] + "-" + tempTexts[j];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
index = 0;
|
|
index = 0;
|
|
this.originTextsInverse = new string[(length * (length - 1)) / 2];
|
|
this.originTextsInverse = new string[(length * (length - 1)) / 2];
|
|
for (int i = length - 1; i >= 0; i--)
|
|
for (int i = length - 1; i >= 0; i--)
|
|
@@ -266,7 +296,7 @@ namespace frequency
|
|
MessageBox.Show("file is empty");
|
|
MessageBox.Show("file is empty");
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
- log.D("ReadTargetText read texts: {0}", texts);
|
|
|
|
|
|
+ log.D("ReadTargetText read texts success with length: {0}", texts.Length);
|
|
// check
|
|
// check
|
|
int length = 0;
|
|
int length = 0;
|
|
for (int i = 0; i < texts.Length; i++)
|
|
for (int i = 0; i < texts.Length; i++)
|
|
@@ -305,6 +335,7 @@ namespace frequency
|
|
var originLength = this.targetTexts.Length;
|
|
var originLength = this.targetTexts.Length;
|
|
string[] tempStrings = new string[this.targetTexts.Length];
|
|
string[] tempStrings = new string[this.targetTexts.Length];
|
|
var index = 0;
|
|
var index = 0;
|
|
|
|
+ targetRecord = new Dictionary<string, int>();
|
|
for (int i = 0; i < this.targetTexts.Length; i++)
|
|
for (int i = 0; i < this.targetTexts.Length; i++)
|
|
{
|
|
{
|
|
|
|
|
|
@@ -318,7 +349,27 @@ namespace frequency
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ val = val.Replace("--", "-");
|
|
|
|
+ var vals = val.Split('-');
|
|
|
|
+ if (vals.Length< 2)
|
|
|
|
+ {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // if ("" == vals[1].Trim())
|
|
|
|
+ if ("" == vals[0].Trim() || "" == vals[1].Trim())
|
|
|
|
+ {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
var clearStr = ClearString(val);
|
|
var clearStr = ClearString(val);
|
|
|
|
+ //clearStr = clearStr.Replace("--", "-");
|
|
|
|
+ if (targetRecord.ContainsKey(clearStr))
|
|
|
|
+ {
|
|
|
|
+ targetRecord[clearStr] = targetRecord[clearStr] + 1;
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ targetRecord[clearStr] = 1;
|
|
tempStrings[index++] = clearStr;
|
|
tempStrings[index++] = clearStr;
|
|
}
|
|
}
|
|
this.targetTexts = new string[index];
|
|
this.targetTexts = new string[index];
|
|
@@ -371,14 +422,12 @@ namespace frequency
|
|
this.currentIndex++;
|
|
this.currentIndex++;
|
|
if (judge(this.originTextsOrder[i], this.targetTexts[j]))
|
|
if (judge(this.originTextsOrder[i], this.targetTexts[j]))
|
|
{
|
|
{
|
|
- var key = this.originTextsOrder[i];
|
|
|
|
- if (result.ContainsKey(key))
|
|
|
|
- {
|
|
|
|
- result[key] = result[key] + 1;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
|
|
+ var originStr = this.originTextsOrder[i];
|
|
|
|
+ var targetStr = this.targetTexts[j];
|
|
|
|
+ var num = getCompareResult(originStr, targetStr);
|
|
|
|
+ if (0 != num)
|
|
{
|
|
{
|
|
- result[key] = 1;
|
|
|
|
|
|
+ result[originStr] = num;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -391,14 +440,19 @@ namespace frequency
|
|
this.currentIndex++;
|
|
this.currentIndex++;
|
|
if (judge(this.originTextsInverse[i], this.targetTexts[j]))
|
|
if (judge(this.originTextsInverse[i], this.targetTexts[j]))
|
|
{
|
|
{
|
|
- var key = this.originTextsInverse[i];
|
|
|
|
- if (result.ContainsKey(key))
|
|
|
|
|
|
+ var originStr = this.originTextsInverse[i];
|
|
|
|
+ var targetStr = this.targetTexts[j];
|
|
|
|
+ var num = getCompareResult(originStr, targetStr);
|
|
|
|
+ if (0 != num)
|
|
{
|
|
{
|
|
- result[key] = result[key] + 1;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- result[key] = 1;
|
|
|
|
|
|
+ if (result.ContainsKey(originStr))
|
|
|
|
+ {
|
|
|
|
+ result[originStr] = result[originStr] + num;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ result[originStr] = num;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -411,6 +465,20 @@ namespace frequency
|
|
return ;
|
|
return ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private int getCompareResult(string origin, string target)
|
|
|
|
+ {
|
|
|
|
+ var originStrs = origin.Split(new char[] { '-' }, 2, StringSplitOptions.None);
|
|
|
|
+ if (originStrs.Length < 2)
|
|
|
|
+ {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ if (!originRecord.ContainsKey(originStrs[0]) || !originRecord.ContainsKey(originStrs[1]) || !targetRecord.ContainsKey(target))
|
|
|
|
+ {
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ return originRecord[originStrs[0]] * originRecord[originStrs[1]] * targetRecord[target];
|
|
|
|
+ }
|
|
|
|
+
|
|
private bool judge(string origin, string target)
|
|
private bool judge(string origin, string target)
|
|
{
|
|
{
|
|
var strs = origin.Split(new char[] { '-' }, 2, StringSplitOptions.None);
|
|
var strs = origin.Split(new char[] { '-' }, 2, StringSplitOptions.None);
|
|
@@ -419,20 +487,22 @@ namespace frequency
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
var originStr1 = strs[0] + "-" + strs[1];
|
|
var originStr1 = strs[0] + "-" + strs[1];
|
|
- var originStr2 = strs[0] + "--" + strs[1];
|
|
|
|
- if (judgeDetail(originStr1, target))
|
|
|
|
- {
|
|
|
|
- return true;
|
|
|
|
- } else if(judgeDetail(originStr2, target))
|
|
|
|
- {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
|
|
+ //var originStr2 = strs[0] + "--" + strs[1];
|
|
|
|
+ return judgeDetail(originStr1, target);
|
|
|
|
+ //if (judgeDetail(originStr1, target))
|
|
|
|
+ //{
|
|
|
|
+ // return true;
|
|
|
|
+ //}
|
|
|
|
+ //else if (judgeDetail(originStr2, target))
|
|
|
|
+ //{
|
|
|
|
+ // return true;
|
|
|
|
+ //}
|
|
|
|
+ //return false;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
* 解决形如 ea#b-c#d 中查找a#b-c#d,但是返回true的bug
|
|
* 解决形如 ea#b-c#d 中查找a#b-c#d,但是返回true的bug
|
|
- */
|
|
|
|
|
|
+ */
|
|
private bool judgeDetail(string origin, string target)
|
|
private bool judgeDetail(string origin, string target)
|
|
{
|
|
{
|
|
var index = target.IndexOf(origin);
|
|
var index = target.IndexOf(origin);
|