/** * 在【疾病文章详情页】中,得到疾病文章的相关文章 和 相关问答 * @author gaoqing * @date 2016-04-20 * @param array $keywords 关键词数组 * @return array 疾病文章的相关文章 和 相关问答 集 */ public static function getRelArtsAndAsksInArticle($keywords, $isGetArticle = true) { $relArtsAndAsks = []; $sphinxRecords = SearchHelper::batchSearch($keywords); $relArticles = []; $relAsks = []; $result = array(); if (!empty($sphinxRecords)) { foreach ($sphinxRecords as $kk => $ret) { $indexer_name = $ret['indexer']; $sphinx_result = Search::parse_search_data($ret, $indexer_name); $result[] = $sphinx_result; } if ($isGetArticle) { $relArticles = count($result) > 1 ? $result[0] : array(); $relAsks = count($result) > 1 ? $result[1] : array(); } else { $relAsks = count($result) > 0 ? $result[0] : array(); } } //根据得到 id ,分别查询 疾病文章的相关文章 和 相关问答 $relArtsAndAsks['relArticles'] = $relArticles; $relArtsAndAsks['relAsks'] = $relAsks; return $relArtsAndAsks; }
/** * 疾病首页 下的 文章解读缓存部分 * @author gaoqing * @date 2016-04-15 * @param sting $cacheKey 缓存的唯一标识 * @param array $diseaseid 疾病id * @return array 文章解读数据集 */ public static function readArticleByDisease($cacheKey, $disease, $forceCache = false) { $cache = \Yii::$app->cache_data_file; $cacheFileName = $cacheKey . '_' . $disease['id']; $data = $cache->get($cacheFileName); if ($forceCache) { $data = false; } if (!isset($data) || empty($data)) { $conditions = array(array('word' => $disease['name'], 'indexer' => 'index_9939_com_jb_art', 'offset' => 0, 'size' => 4, 'condition' => array(array('filter' => 'filter', 'args' => array('tmp_type_id', array(2, 7))))), array('word' => $disease['name'], 'indexer' => 'index_9939_com_jb_art', 'offset' => 0, 'size' => 4, 'condition' => array(array('filter' => 'filter', 'args' => array('tmp_type_id', array(1, 3, 4))))), array('word' => $disease['name'], 'indexer' => 'index_9939_com_jb_art', 'offset' => 0, 'size' => 4, 'condition' => array(array('filter' => 'filter', 'args' => array('tmp_type_id', array(5))))), array('word' => $disease['name'], 'indexer' => 'index_9939_com_jb_art', 'offset' => 0, 'size' => 4, 'condition' => array(array('filter' => 'filter', 'args' => array('tmp_type_id', array(6, 8)))))); $diseaseArtids = SearchHelper::batchSearch($conditions); $result = array(); $keys = ['病因是什么', '症状有哪些', '怎么治疗', '如何护理']; foreach ($diseaseArtids as $key => $ret) { $indexer_name = $ret['indexer']; $sphinx_result = Search::parse_search_data($ret, $indexer_name); $ret_list = []; if (!empty($sphinx_result['list'])) { $ret_list = $sphinx_result['list']; } $result[$keys[$key]] = $ret_list; } if (!empty($result)) { $data = $result; $cache->set($cacheFileName, $result, self::DURATION); } } return $data; /* $cache = \Yii::$app->cache_data_file; $cacheFileName = $cacheKey . '_' . $disease['id']; $data = $cache->get($cacheFileName); if ($forceCache){ $data = false; } if (!isset($data) || empty($data)){ $article = new DArticle(); $allReads = []; $moduleMap = [ '病因是什么' => [2, 7], '症状有哪些' => [1, 3, 4], '怎么治疗' => [5], '如何护理' => [6, 8], ]; foreach ($moduleMap as $key => $types){ $preList = $article->getListByDiseaseid(['diseaseid' => $disease['id'], 'type' => $types], 0, 4); $allReads[$key] = $preList; } if (!empty($allReads)){ $data = $allReads; $cache->set($cacheFileName, $allReads); } } return $data; */ }
/** * 首页右侧热门关注 * sphinx调用疾病文章查询 * @return array latestFucus 对应的数据集合 */ public function latestFucus() { $cache = \Yii::$app->cache_file; $cache_key = 'frontend_seek_right_rmgz'; //疾病搜索页面_右侧_热门关注 $data = $cache->get($cache_key); if (!empty($data)) { return $data; } else { $queries = array(array('word' => '高血压', 'indexer' => 'index_9939_com_jb_art'), array('word' => '心脏病', 'indexer' => 'index_9939_com_jb_art'), array('word' => '包皮过长', 'indexer' => 'index_9939_com_jb_art'), array('word' => '乳腺增生', 'indexer' => 'index_9939_com_jb_art'), array('word' => '胃溃疡', 'indexer' => 'index_9939_com_jb_art'), array('word' => '宫颈癌', 'indexer' => 'index_9939_com_jb_art'), array('word' => '癫痫病', 'indexer' => 'index_9939_com_jb_art'), array('word' => '阳痿', 'indexer' => 'index_9939_com_jb_art'), array('word' => '哮喘', 'indexer' => 'index_9939_com_jb_art'), array('word' => '龋齿', 'indexer' => 'index_9939_com_jb_art')); $result = []; $ret = \librarys\helpers\utils\SearchHelper::batchSearch($queries); foreach ($ret as $kk => $ret) { $indexer_name = $ret['indexer']; $sphinx_result = Search::parse_search_data($ret, $indexer_name); $ret_list = $sphinx_result['list']; $kw = $queries[$kk]['word']; $result[$kw] = $ret_list; } $cache->set($cache_key, $result, 24 * 3600); return $result; } }
/** * 首页 疾病资讯 inc_mid_news文件里的数据缓存 * @param string $cacheKey * @param type $parms * @return */ public static function cacheIndexNewsBySphinx($cacheKey, $parms) { $newWords = $parms['newWords']; $art_obj = new \common\models\disease\Article(); $cache = \Yii::$app->cache_data_file; $key = $cacheKey; $data = $cache->get($key); if (!isset($data) || empty($data)) { //1、根据不同的词拼出sphinx批量查询的条件 $conditon = []; $n = 0; foreach ($newWords as $k => $v) { $w = $n; $conditon[$w] = ['word' => $k, 'indexer' => 'index_9939_com_jb_art']; $n++; } // print_r($conditon);exit; //2、根据sphinx批量查询得到记录 $sphinxRecords = SearchHelper::batchSearch($conditon); $result = array(); foreach ($sphinxRecords as $kk => $ret) { $indexer_name = $ret['indexer']; $sphinx_result = Search::parse_search_data($ret, $indexer_name); $ret_list = $sphinx_result['list']; $kw = $conditon[$kk]['word']; $result[$kw] = $ret_list; } // //7、设置缓存 // $cache->set($key, $result); return $result; } else { return $data; } }