info("upgrade:wbwanalyses start"); $bar = $this->output->createProgressBar(Wbw::count()); $counter =0; if(empty($this->argument('id'))){ $it = Wbw::orderby('id')->cursor(); }else{ $arrId = explode(',',$this->argument('id')); $it = Wbw::whereIn('id',$arrId)->orderby('id')->cursor(); } foreach ($it as $wbwrow) { $counter++; WbwAnalysis::where('wbw_id',$wbwrow->id)->delete(); # code... $data = str_replace(" ",' ',$wbwrow->data); $data = str_replace("
",' ',$data); $xmlString = "" . $data . ""; try{ $xmlWord = simplexml_load_string($xmlString); }catch(Exception $e){ continue; } $wordsList = $xmlWord->xpath('//word'); foreach ($wordsList as $word) { $pali = $word->real->__toString(); $factors = []; foreach ($word as $key => $value) { $strValue = trim($value->__toString()); if ($strValue !== "?" && $strValue !== "" && $strValue !== ".ctl." && $strValue !== ".a." && mb_substr($strValue, 0, 3, "UTF-8") !== "[a]" && $strValue !== "_un_auto_factormean_" && $strValue !== "_un_auto_mean_") { $iType = 0; $lang = 'pali'; $newData = [ 'wbw_id'=>$wbwrow->id, 'wbw_word'=>$wbwrow->word, 'book_id'=>$wbwrow->book_id, 'paragraph'=>$wbwrow->paragraph, 'wid'=>$wbwrow->wid, 'type'=>0, 'data'=>$strValue, 'confidence'=>100, 'lang'=>'en', 'editor_id'=>$wbwrow->editor_id, 'created_at'=>$wbwrow->created_at, 'updated_at'=>$wbwrow->updated_at ]; #TODO 加虚词 switch ($key) { case 'type': $newData['type']=1; WbwAnalysis::insert($newData); break; case 'gramma': $newData['type']=2; WbwAnalysis::insert($newData); break; case 'mean': $newData['type']=3; WbwAnalysis::insert($newData); break; case 'org': $newData['type']=4; WbwAnalysis::insert($newData); $factors=explode("+",$strValue); break; case 'om': $newData['type']=5; WbwAnalysis::insert($newData); # 存储拆分意思 $newData['type']=7; $factorMeaning = explode('+',$strValue); foreach ( $factors as $index => $factor) { if(isset($factorMeaning[$index]) && !empty($factorMeaning[$index]) && $factorMeaning[$index] !== "↓↓" ){ $newData['wbw_word'] = $factor; $newData['data'] = $factorMeaning[$index]; WbwAnalysis::insert($newData); } } break; case 'parent': $newData['type']=6; WbwAnalysis::insert($newData); break; case 'case': $newData['type']=8; WbwAnalysis::insert($newData); break; case 'rela': /* [{"sour_id":"p199-764-6","sour_spell":"dhammacakkappavattanatthaṃ","dest_id":"p199-764-8","dest_spell":"āmantanā","relation":"ADV","note":""}] */ $newData['type']=9; $rlt = json_decode($strValue); foreach ($rlt as $rltValue) { # code... if(!empty($rltValue->relation)){ $newData['data'] = $rltValue->relation; if(isset($word->gramma) && !empty($word->gramma)){ $grm = explode('$',$word->gramma); if(count($grm)>0){ $newData['d1'] = $grm[count($grm)-1]; }else{ $newData['d1'] = $word->type; } } $newData['d2'] = (int)(explode('-',$rltValue->dest_id)[2]) - (int)(explode('-',$rltValue->sour_id)[2]) ; WbwAnalysis::insert($newData); } } break; } } } } $bar->advance(); } $bar->finish(); $time = time() - $startAt; $this->info("wbw analyses done in {$time}"); return 0; } }