|
|
@@ -5,27 +5,53 @@ import { stringUtils } from '../util/stringClass.js';
|
|
5
|
5
|
async function runScript(){
|
|
6
|
6
|
try {
|
|
7
|
7
|
|
|
8
|
|
- const sql="SELECT * FROM kylx365_db.Words;"
|
|
|
8
|
+ const sql="SELECT Word,FinallyNum FROM kylx365_db.WordFrequency order by FinallyNum;"
|
|
9
|
9
|
let list = await commonModel.RunSql(null,sql);
|
|
10
|
|
- for(let i=0;i<list.length;i++){
|
|
11
|
|
- let item=list[i];
|
|
|
10
|
+ let count=list.length;
|
|
|
11
|
+ //count=10;
|
|
|
12
|
+ for(let i=10;i<count;i++){
|
|
|
13
|
+ let word=list[i].Word;
|
|
12
|
14
|
//console.log(i+'/'+list.length);
|
|
13
|
15
|
//console.log(item.Translate);
|
|
14
|
16
|
|
|
15
|
|
- if (item.Translate){
|
|
16
|
|
- //let output=removeDuplicateDefinitions(item.Translate);
|
|
17
|
|
- let output=item.Translate;
|
|
18
|
|
- if (output.lastIndexOf(",")==output.length-1)
|
|
19
|
|
- output=output.substring(0,output.length-1);
|
|
20
|
|
- //console.log(output);
|
|
21
|
|
- if (output && item.Translate!=output){
|
|
22
|
|
- //console.log("input:"+item.Translate);
|
|
23
|
|
- //console.log("output:"+output);
|
|
24
|
|
- console.log("update Words set Translate='"+output+"' where ID="+item.ID+";");
|
|
25
|
|
- let sql="update Words set Translate='"+output+"' where ID="+item.ID+";";
|
|
26
|
|
- await commonModel.RunSql(null,sql);
|
|
|
17
|
+ const sql2="select JSONString from MiaoguoLiteracy where Word='"+word+"';"
|
|
|
18
|
+ let list2 = await commonModel.RunSql(null,sql2);
|
|
|
19
|
+ for(let j=0;j<list2.length;j++){
|
|
|
20
|
+ if (list2[j]){
|
|
|
21
|
+ try{
|
|
|
22
|
+ let json=list2[j].JSONString;
|
|
|
23
|
+ json=JSON.parse(json);
|
|
|
24
|
+ if (json.ENG){
|
|
|
25
|
+ let soundmark=json.ENG.Soundmark.Eng;
|
|
|
26
|
+ let translate=[];
|
|
|
27
|
+ let list3=json.ENG.Paraphrase;
|
|
|
28
|
+ for(let k=0;k<list3.length;k++){
|
|
|
29
|
+ translate.push(list3[k].PartOfSpeech);
|
|
|
30
|
+ translate.push(list3[k].ParaphraseList.join(""));
|
|
|
31
|
+ }
|
|
|
32
|
+ let translateStr=translate.join(" ");
|
|
|
33
|
+ translateStr=stringUtils.ReplaceAllString(translateStr,",",",");
|
|
|
34
|
+ translateStr=stringUtils.ReplaceAllString(translateStr,";;",";");
|
|
|
35
|
+ translateStr=stringUtils.ReplaceAllString(translateStr," "," ");
|
|
|
36
|
+
|
|
|
37
|
+ //console.log(word+" "+soundmark+" "+translateStr);
|
|
|
38
|
+ let sql3="INSERT INTO `kylx365_db`.`Words` (`Word`,`BookID`,`LessonID`,`Soundmark`,`Translate`,`Sort`) VALUES ";
|
|
|
39
|
+ sql3+=" ('"+word+"',100,0,?,"+list[i].FinallyNum+");";
|
|
|
40
|
+ //console.log(sql3);
|
|
|
41
|
+ await commonModel.RunSql([soundmark,translateStr],sql3);
|
|
|
42
|
+ console.log( i +"/"+ list.length);
|
|
|
43
|
+
|
|
|
44
|
+ }
|
|
|
45
|
+ else
|
|
|
46
|
+ continue;
|
|
|
47
|
+ }
|
|
|
48
|
+ catch(e){
|
|
|
49
|
+ console.error(e);
|
|
|
50
|
+ continue;
|
|
|
51
|
+ }
|
|
27
|
52
|
}
|
|
28
|
53
|
}
|
|
|
54
|
+
|
|
29
|
55
|
}
|
|
30
|
56
|
|
|
31
|
57
|
|
|
|
@@ -74,52 +100,4 @@ async function runScript(){
|
|
74
|
100
|
// 处理Promise并添加错误捕获
|
|
75
|
101
|
runScript().catch(error => {
|
|
76
|
102
|
console.error('Error in runScript:', error);
|
|
77
|
|
-});
|
|
78
|
|
-
|
|
79
|
|
-function removeDuplicateDefinitions(input) {
|
|
80
|
|
- // 分割词性和释义
|
|
81
|
|
- const segments = input.split(/([a-z]+\.)/).filter(Boolean);
|
|
82
|
|
- const definitions = {};
|
|
83
|
|
- let currentType = null;
|
|
84
|
|
- let originalOrder = [];
|
|
85
|
|
-
|
|
86
|
|
- // 解析词性和释义
|
|
87
|
|
- for (let i = 0; i < segments.length; i++) {
|
|
88
|
|
- const segment = segments[i].trim();
|
|
89
|
|
- if (segment.match(/^[a-z]+\.$/)) {
|
|
90
|
|
- // 这是词性标记
|
|
91
|
|
- currentType = segment;
|
|
92
|
|
- if (!definitions[currentType]) {
|
|
93
|
|
- definitions[currentType] = [];
|
|
94
|
|
- originalOrder.push(currentType);
|
|
95
|
|
- }
|
|
96
|
|
- } else if (currentType) {
|
|
97
|
|
- // 这是释义内容
|
|
98
|
|
- const meanings = segment.split(/\s+/).filter(Boolean);
|
|
99
|
|
- definitions[currentType].push(...meanings);
|
|
100
|
|
- }
|
|
101
|
|
- }
|
|
102
|
|
-
|
|
103
|
|
- // 去重处理
|
|
104
|
|
- const result = [];
|
|
105
|
|
- for (const type of originalOrder) {
|
|
106
|
|
- if (definitions[type]) {
|
|
107
|
|
- // 使用Set去重并保留原始顺序
|
|
108
|
|
- const uniqueMeanings = [];
|
|
109
|
|
- const seen = new Set();
|
|
110
|
|
- for (const meaning of definitions[type]) {
|
|
111
|
|
- if (!seen.has(meaning)) {
|
|
112
|
|
- seen.add(meaning);
|
|
113
|
|
- uniqueMeanings.push(meaning);
|
|
114
|
|
- }
|
|
115
|
|
- }
|
|
116
|
|
- result.push(`${type}${uniqueMeanings.join(' ')}`);
|
|
117
|
|
- }
|
|
118
|
|
- }
|
|
119
|
|
-
|
|
120
|
|
- return result.join(' ');
|
|
121
|
|
-}
|
|
122
|
|
-
|
|
123
|
|
-
|
|
124
|
|
-//console.log(removeDuplicateDefinitions("adj.十分喜悦的 快乐的 adj.十分喜悦的 快乐的"));
|
|
125
|
|
-//console.log(removeDuplicateDefinitions("vi.起立 升起 上涨 起身n.上升 增加 小山 斜坡 vi.起立 升起 上涨 起身n.上升 增加 小山 斜坡"));
|
|
|
103
|
+});
|