Exemplo n.º 1
0
 /**
  * 在【疾病文章详情页】中,得到疾病文章的相关文章 和 相关问答
  * @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;
 }
Exemplo n.º 2
0
 /**
  * 疾病首页 下的 文章解读缓存部分
  * @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; */
 }
Exemplo n.º 3
0
 /**
  * 首页右侧热门关注
  * 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;
     }
 }