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