Просмотр исходного кода

使用社区统计字典优化首选项

visuddhinanda 3 лет назад
Родитель
Сommit
b23b591999

+ 18 - 14
app/Http/Controllers/WbwLookupController.php

@@ -13,8 +13,10 @@ use Illuminate\Support\Facades\Cache;
 class WbwLookupController extends Controller
 {
 	private $dictList = [
-		'57afac99-0887-455c-b18e-67c8682158b0',// system regular
+		'85dcc61c-c9e1-4ae0-9b44-cd6d9d9f0d01',//社区汇总
 		'4d3a0d92-0adc-4052-80f5-512a2603d0e8',// system irregular
+		'57afac99-0887-455c-b18e-67c8682158b0',// system regular
+		'ef620a93-a55d-4756-89c5-e188ab009e45',//社区字典
 		'8359757e-9575-455b-a772-cc6f036caea0',// system sandhi
 		'c42980f0-5967-4833-b695-84183344f68f',// robot compound
 		'61f23efb-b526-4a8e-999e-076965034e60',// pali myanmar grammar
@@ -22,7 +24,7 @@ class WbwLookupController extends Controller
 		'2f93d0fe-3d68-46ee-a80b-11fa445a29c6',// unity
 		'beb45062-7c20-4047-bcd4-1f636ba443d1',// U Hau Sein
 		'8833de18-0978-434c-b281-a2e7387f69be',// 巴汉增订
-		'3acf0c0f-59a7-4d25-a3d9-bf394a266ebd',// 汉译パーリ语辞典-黃秉榮
+		'3acf0c0f-59a7-4d25-a3d9-bf394a266ebd',// 汉译パーリ语辞典-黃秉榮			
 	];
     /**
      * Display a listing of the resource.
@@ -53,26 +55,28 @@ class WbwLookupController extends Controller
 				# code...
 				if($info['done'] == false){
 					$wordPool[$word]['done'] = true;
+					$count = 0;
 					foreach ($this->dictList as  $dictId) {
 						# code...
-					}
-					$result = Cache::remember("dict/basic/".$word,60,function() use($word){
-						return UserDict::where('word',$word)->where('source','<>','_USER_WBW_')->where('source','<>','_PAPER_')->orderBy('confidence','desc')->get();
-					});
-					Log::info("query {$word} ".((microtime(true)-$startAt)*1000)."s.");
-					if(count($result)>0){
-						foreach ($result as  $dictword) {
-							# code...
-							array_push($output,$dictword);
-							if(!empty($dictword->factors)){
-								if(!isset($wordPool[$word]['factors'])){
+						$result = Cache::remember("dict/{$dictId}/".$word,1000,function() use($word,$dictId){
+							return UserDict::where('word',$word)->where('dict_id',$dictId)->orderBy('confidence','desc')->get();
+						});	
+						$count += count($result);
+						if(count($result)>0){
+							foreach ($result as  $dictword) {
+								# code...
+								array_push($output,$dictword);
+								if(!isset($wordPool[$word]['factors']) && !empty($dictword->factors)){
 									//将第一个拆分作为最佳拆分存储
 									$wordPool[$word]['factors'] = $dictword->factors;
 									Log::info("best factor:{$dictword->factors}");
 								}
 							}
 						}
-					}else{
+					}
+
+					Log::info("query {$word} ".((microtime(true)-$startAt)*1000)."s.");
+					if($count == 0){
 						//没查到 去尾查
 						Log::info("没查到 去尾查");
 						$newBase = array();

+ 17 - 3
public/app/studio/js/editor.js

@@ -5425,7 +5425,7 @@ function FillAllWord(word=''){
 							setNodeText(xAllWord[x], "gramma", mDict[endOfParts][0].grammar);
 							setNodeText(xAllWord[x], "case", mDict[endOfParts][0].type + "#" + mDict[endOfParts][0].grammar);
 							setNodeAttr(xAllWord[x], "case",'status',3);
-							if(isEmpty(getNodeAttr(xAllWord[x], "parent"))){
+							if(isEmpty(getNodeText(xAllWord[x], "parent"))){
 								inline_dict_auto_case(real);
 								for (const iterator of mDict[real]) {
 									if(iterator.type == mDict[endOfParts][0].type && 
@@ -5441,14 +5441,28 @@ function FillAllWord(word=''){
 				}
 			}
 			let fm = "";
-			if(isEmpty(getNodeAttr(xAllWord[x], "om"))){
+			if(isEmpty(getNodeText(xAllWord[x], "om"))){
 				//根据拆分,自动给出拆分意思
 				fm = getAutoFactorMeaning(getNodeText(xAllWord[x], "org"));
 				setNodeText(xAllWord[x], "om", fm);
 				setNodeAttr(xAllWord[x], "om",'status',3);
 			}
-			if(isEmpty(getNodeAttr(xAllWord[x], "mean"))){
+			if(isEmpty(getNodeText(xAllWord[x], "mean"))){
+				//先查parent
+				let parent = getNodeText(xAllWord[x], "parent");
+				if(!isEmpty(parent) && mDict.hasOwnProperty(parent)){
+					for (const iterator of mDict[parent]) {
+						if(!isEmpty(iterator.mean)){
+							setNodeText(xAllWord[x], "mean", iterator.mean);
+							setNodeAttr(xAllWord[x], "mean",'status',3);
+							break;
+						}
+					}
+				}
+			}
+			if(isEmpty(getNodeText(xAllWord[x], "mean"))){
 				//根据拆分,自动给出整体意思
+				console.log('meaning empty '+getNodeText(xAllWord[x], "mean"));
 				setNodeText(xAllWord[x], "mean", fm.replace(/\+/g,' '));
 				setNodeAttr(xAllWord[x], "mean",'status',3);
 			}

+ 1 - 1
public/app/studio/js/render.js

@@ -4088,7 +4088,7 @@ function updataView() {
 	}
 	word_mouse_event();
 	//console.log("updataview");
-	console.log(topNewDivArray.toString());
+	//console.log(topNewDivArray.toString());
 }
 
 function render_word_mean_menu2(spell) {

+ 32 - 0
public/app/studio/js/wbw_dict.js

@@ -413,4 +413,36 @@ function auto_lookup_wbw(para_index) {
 			}
 		}
 	);
+}
+
+/**
+ * 清空逐词译数据 
+ */
+function InitWbw(){
+	let xWord = gXmlBookDataBody.getElementsByTagName("word");
+	for (let index = 0; index < xWord.length; index++) {
+		let word = xWord[index];
+		setNodeText(word,'mean','');
+		setNodeText(word,'org','');
+		setNodeText(word,'om','');
+		setNodeText(word,'parent','');
+		setNodeText(word,'gramma','');
+		setNodeText(word,'type','');
+		setNodeText(word,'case','');
+		setNodeText(word,'status',0);
+
+		setNodeAttr(word,'org','status',0);
+		setNodeAttr(word,'om','status',0);
+		setNodeAttr(word,'parent','status',0);
+		setNodeAttr(word,'gramma','status',0);
+		setNodeAttr(word,'type','status',0);
+		setNodeAttr(word,'case','status',0);		
+		let wid = getNodeText(word, "id");
+		modifyWordDetailByWordId(wid);
+		user_wbw_push_word(wid);	
+	}
+		
+	user_wbw_commit();
+
+	return 'init wbw ' + xWord.length;
 }

+ 2 - 2
public/app/studio/js/xml.js

@@ -191,8 +191,8 @@ function findFirstMeanInDict(inWord) {
  * @returns 
  */
 function findFirstPartMeanInDict(inWord) {
-	let pali = com_getPaliReal(inWord);
-	if (mDict[pali]) {
+	let pali = inWord;
+	if (Object.hasOwnProperty.call(mDict, pali)) {
 		for (const iterator of mDict[pali]) {
 			if(LangInclude(setting['dict.lang'],iterator.language))
 			{