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; }
/** * 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]); }