Przeglądaj źródła

:sparkles: factorMeaning 自动匹配

visuddhinanda 2 lat temu
rodzic
commit
8379bd56a3
1 zmienionych plików z 50 dodań i 10 usunięć
  1. 50 10
      app/Http/Controllers/WbwLookupController.php

+ 50 - 10
app/Http/Controllers/WbwLookupController.php

@@ -168,15 +168,16 @@ class WbwLookupController extends Controller
         $fieldId = $fieldMap[$field];
         $myPreference = RedisClusters::get("{$prefix}/{$word}/{$fieldId}/{$userId}");
         if(!empty($myPreference)){
-            Log::info($word.'命中我的wbw-'.$field);
+            Log::debug($word.'命中我的wbw-'.$field,['data'=>$myPreference]);
             return ['value'=>$myPreference,'status'=>5];
         }else{
             $myPreference = RedisClusters::get("{$prefix}/{$word}/3/0");
             if(!empty($myPreference)){
-                Log::info($word.'命中社区wbw-'.$field);
+                Log::debug($word.'命中社区wbw-'.$field,['data'=>$myPreference]);
                 return ['value'=>$myPreference,'status'=>5];
             }
         }
+        //Log::debug($word.'未命中'.$field);
         return false;
     }
     /**
@@ -191,7 +192,7 @@ class WbwLookupController extends Controller
         $user = AuthApi::current($request);
         if(!$user ){
             //未登录用户
-            return $this->error(__('auth.failed'),[],401);
+            return $this->error(__('auth.failed'),401,401);
         }
 
         $startAt = microtime(true)*1000;
@@ -265,19 +266,19 @@ class WbwLookupController extends Controller
                     if($value->type !== '.cp.'){
                         $parent = $this->insertValue([$value->parent],$parent,$increment);
                     }
-                    if($data['case']['status']<5){
+                    if(isset($data['case']) && $data['case']['status']<5){
                         if(!empty($value->type) && $value->type !== ".cp."){
                             $case = $this->insertValue([$value->type."#".$value->grammar],$case,$increment);
                         }
                     }
-                    if($data['factors']['status']<5){
+                    if($data['factors']['status'] < 50){
                         $factors = $this->insertValue([$value->factors],$factors,$increment);
                     }
-                    if($data['factorMeaning']['status']<5){
+                    if(isset($data['factorMeaning']) && $data['factorMeaning']['status'] < 50){
                         $factorMeaning = $this->insertValue([$value->factormean],$factorMeaning,$increment);
                     }
 
-                    if($data['meaning']['status']<5){
+                    if($data['meaning']['status'] < 50){
                         if($this->langCheck($lang,$value->language)){
                             $meaning = $this->insertValue(explode('$',$value->mean),$meaning,$increment,false);
                         }
@@ -293,18 +294,57 @@ class WbwLookupController extends Controller
                     $first = array_keys($parent)[0];
                     $data['parent'] = ['value'=>$first==="_null"?"":$first,'status'=>3];
                 }
-                if(count($factors)>0){
+                if(count($factors)>0 && empty($data['factors']['value'])){
                     arsort($factors);
                     $first = array_keys($factors)[0];
                     $data['factors'] = ['value'=>$first==="_null"?"":$first,'status'=>3];
                 }
+
+                if(isset($data['factorMeaning']['value'])){
+                    $inputFM = str_replace(['-','+'],['',''],$data['factorMeaning']['value']);
+                }else{
+                    $inputFM = '';
+                }
+
+                if(count($factorMeaning)>0 && empty($inputFM)){
+                    $first = array_keys($factorMeaning)[0];
+                    if($first==="_null"){
+                        $factorMeaning = [];
+                    }
+                }
                 //拆分意思
+                if(count($factorMeaning) === 0){
+                    $autoMeaning = '';
+                    //生成自动的拆分意思
+                    $currFactors = explode('+',$data['factors']['value']) ;
+                    $autoFM = [];
+                    foreach ($currFactors as $factor) {
+                        $subFactors = explode('-',$factor) ;
+                        $autoSubFM = [];
+                        foreach ($subFactors as $subFactor) {
+                            $preference = $this->wbwPreference($subFactor,'meaning',$user['user_id']);
+                            if($preference !== false){
+                                $autoSubFM[] = $preference['value'];
+                            }else{
+                                $autoSubFM[] = '';
+                            }
+                        }
+                        $autoFM[] = implode('-',$autoSubFM);
+                        $autoMeaning .= implode('',$autoSubFM);
+                    }
+                    $autoMeaning .= implode('',$autoFM);
+                    $factorMeaning = [implode('+',$autoFM)=>1];
+                    if(empty($data['meaning']['value']) && !empty($autoMeaning)){
+                        $data['meaning'] = ['value'=>$autoMeaning,'status'=>5];
+                    }
+                }
+
                 if(count($factorMeaning)>0){
                     arsort($factorMeaning);
                     $first = array_keys($factorMeaning)[0];
-                    $data['factorMeaning'] = ['value'=>$first==="_null"?"":$first,'status'=>3];
+                    $data['factorMeaning'] = ['value'=>$first==="_null"?"":$first,'status'=>5];
                 }
-                if($data['factorMeaning']['status']<5){
+                if(isset($data['factorMeaning']) && $data['factorMeaning']['status']<5){
                     $wbwFactorMeaning = [];
                     if(!empty($data['factors']['value'])){
                         foreach (explode("+",$data['factors']['value']) as  $factor) {