Example #1
0
 /**
  * Поиск по всем пользователям через Sphinx.
  * 
  * @param type $count
  * @param bool $filter
  * @param type $page
  *
  * @return type
  */
 public function searchUsersBySphinx(&$count, $filter, $page = 1)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/search/search_ext.php';
     $string_query = trim(@$filter['search_name']);
     $search_name_exact = $filter['search_name_exact'] == 1;
     unset($filter['search_name'], $filter['search_name_exact']);
     $type = 'users_all';
     //Любое из слов
     if (!$search_name_exact) {
         $aKeyword = array();
         $aRequestString = preg_split('/[\\s,]+/', $string_query, 5);
         if ($aRequestString) {
             foreach ($aRequestString as $sValue) {
                 if (strlen($sValue) >= 3) {
                     $aKeyword[] .= '("' . $sValue . '" | "*' . $sValue . '*")';
                 }
             }
             if (!empty($aKeyword)) {
                 $string_query = implode(' | ', $aKeyword);
             }
         }
     }
     //Убираем пустые параметры фильра
     $filter = array_filter($filter);
     //Поиск Sphinx
     $search = new searchExt(get_uid(false));
     $search->setUserLimit($this->items_pp);
     $searchElement = $search->addElement($type, true, $this->items_pp);
     $searchElement->setMode($search_name_exact ? SPH_MATCH_ALL : SPH_MATCH_ANY);
     $search->searchByType($type, $string_query, $page, $filter);
     $elements = $search->getElements();
     $element = $elements[$type];
     $count = $element->total;
     return $element->results;
 }
Example #2
0
        $raw_professions = professions::GetProfessionsTitles(array_keys($filter["prof"][1]));
        $a_professions = array();
        foreach ($raw_professions as $profession_item) {
            $a_professions[$profession_item["name"]] = '(@name_prof "' . $profession_item["name"] . '" | @additional_specs "' . $profession_item["name"] . '")';
        }
        $string_professions = '(' . join(" | ", $a_professions) . ')';
    }
    $string_query = $search_string;
    // @todo Кажется, это никогда не используется?
    $string_query .= !empty($string_professions) ? ' ' . $string_professions : '';
    $type = 'users_ext';
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/search/search_ext.php";
    $search = new searchExt($uid);
    $search->setUserLimit(FRL_PP);
    $search->addElement($type, true, FRL_PP);
    $search->searchByType($type, $string_query, $page, $filter);
    $elements = $search->getElements();
    $element = $elements[$type];
    $frls = $element->results;
    $size = $element->total;
    $works = $element->works;
    $content = "search/content.php";
} else {
    $direction = (int) __paramInit('bool', 'dir', 'dir', false);
    $order = __paramInit('string', 'order', 'order', 'gnr');
    $catalog = new FreelancerCatalog();
    $catalog->initSearch($prof_group_id, $prof_id, $page, $order, $direction);
    if ($catalog->isFound()) {
        $frls = $catalog->getUsers();
        $works = $catalog->getWorks();
        $pages = $catalog->getPages();