Exemplo n.º 1
0
 private static function searchAds(\ApiParam $params)
 {
     list($query, $category, $city, $wanted, $options, $realTime) = self::searchOption($params, 'createdTime desc');
     $activeOnly = $params->activeOnly == 1;
     $inactiveOnly = $params->inactiveOnly == 1;
     $totalCount = 0;
     if ($inactiveOnly) {
         $searcher = new \InactiveSearcher($query, $options);
     } else {
         if ($activeOnly) {
             $query = new \AndQuery($query, new \Query('status', \Ad::STATUS_ACTIVE));
         }
         if ($category) {
             $query = new \AndQuery($query, new \Query('categoryEnglishName', $category->englishName));
         }
         if ($city) {
             $query = new \AndQuery($query, new \Query('cityEnglishName', $city->englishName));
         }
         if (isset($wanted)) {
             $query = new \AndQuery($query, new \Query('wanted', $wanted));
         }
         $searcher = new \ActiveSearcher($query, $options);
         if (!(isset($options['start']) && $options['start'] > 0)) {
             if ($params->isUserAd) {
                 $searcher->prepend(new \RtSearcher($query, $options));
             } else {
                 // 修改过的很老的数据也会进rt库,只搜最近11分钟内创建的AD  @zhongjiawu 2012-12-13
                 $rtQuery = new \AndQuery($query, new \DateFrangeQuery('createdTime', strtotime(date('Y-m-d H:i:00', time() - 660))));
                 $searcher->prepend(new \RtSearcher($rtQuery, $options));
             }
         }
         if (!$activeOnly) {
             $searcher->prepend(new \InactiveSearcher($query, $options));
         }
     }
     $totalCount += $searcher->totalCount();
     return array($totalCount, $searcher->ads());
 }
Exemplo n.º 2
0
 /**
  *	Search ad by keyword and category
  */
 public static function mobile_ad_search(\ApiParam $params)
 {
     $result = array();
     $keyword = $params->query;
     //assume query == keyword
     $resultByFacet = array();
     $options = array('facet.field' => 'categoryEnglishName', 'facet.mincount' => 0, 'facet.limit' => 10, 'waitSuccess' => true);
     $q = new \Query('title', $keyword);
     $q = new \AndQuery($q, new \Query('cityEnglishName', $params->cityEnglishName));
     $res = new \ActiveSearcher($q, $options);
     $resultByFacets = $res->facet();
     $result['count'] = count($resultByFacets);
     $data = array();
     foreach (array_keys($resultByFacets) as $categoryEnglishName) {
         $matched = $resultByFacets[$categoryEnglishName];
         if ($matched == 0) {
             continue;
         }
         try {
             $categoryName = self::loadCategoryName($categoryEnglishName);
         } catch (\Exception $e) {
             continue;
         }
         if (!empty($categoryName)) {
             //中文类目名为空则标志此类目当前不显示
             $data[] = array($categoryEnglishName, $categoryName, $matched);
         }
     }
     $result['data'] = $data;
     return $result;
 }