Example #1
0
 public static function getFullPy($word)
 {
     $RET = '';
     if ($word) {
         $word = SearchUtil::EscapeKeyword($word);
         // 分词
         $url = sprintf('http://360xun.sinaapp.com/api/segment?words=%s', urlencode($word));
         $segWord = httpClient::curlRequset($url);
         // 中文单字
         $singleWordArr = self::SplitSingleChinese($word);
         $singleWord = implode(' ', $singleWordArr);
         // 中文拼音前缀
         $preWordArr = self::SplitChinese($word);
         $preWord = implode(' ', $preWordArr);
         $pySegWord = Pinyin::str2py($segWord);
         $pySingleWord = Pinyin::str2py($singleWord);
         $pyPreWord = Pinyin::str2py($preWord);
         $segArr = explode(' ', $segWord);
         $engArr = array();
         if ($segArr) {
             foreach ($segArr as $s) {
                 if (preg_match('/^[a-zA-Z]+$/is', $s)) {
                     if ($engs = self::SplitEnglish($s, 3)) {
                         $engArr = array_merge($engArr, $engs);
                     }
                 }
             }
         }
         $RET = $pySegWord . ' ' . $pySingleWord . ' ' . $pyPreWord;
         if ($engArr) {
             $RET = implode(' ', $engArr) . ' ' . $RET;
         }
         $RET_ARR = array_unique(explode(' ', $RET));
         $RET = implode(' ', $RET_ARR);
         $RET = trim($RET);
     }
     return $RET;
 }
Example #2
0
 /**
  * search
  */
 public function actionSearch($keyword = '')
 {
     $this->menu_tag = 'list';
     $originalKeyword = htmlentities($keyword);
     $movieList = array();
     if ($keyword) {
         // filer word
         $keyword = SearchUtil::EscapeKeyword($keyword);
         $keyword = mb_substr($keyword, 0, 50, 'UTF-8');
         $s = new SearchClient();
         $searchRs = $s->search($keyword, 1, 50);
         $movieIdArr = array_keys($searchRs);
         $movieData = models\MvBasic::find()->select('id,title,rating,year,source_num,casts,images,directors')->where(['id' => $movieIdArr])->indexBy('id')->asArray()->all();
         foreach ($searchRs as $movieId => $m) {
             // casts 保留5个
             $movie = $movieData[$movieId];
             $casts = explode(',', $movie['casts']);
             $movie['casts'] = implode(' / ', array_slice($casts, 0, 5));
             $movieList[] = $movie;
         }
     }
     return $this->render('movie_search_list', ['movie' => $movieList, 'originalKeyword' => $originalKeyword]);
 }