if (!empty($filter["prof"]) && is_array($filter["prof"][1])) { $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();
/** * Поиск по всем пользователям через 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; }
ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/search/search_ext.php'; //------------------------------------------------------------------------------ define('ON_PAGE', 20); $type = 'users_all'; $uid = get_uid(false); $string_query = 'Алексей'; $page = 1; $filter = false; $search = new searchExt($uid); $search->setUserLimit(ON_PAGE); $search->addElement($type, true, ON_PAGE); $search->searchByType($type, $string_query, $page, $filter); $elements = $search->getElements(); $element = $elements[$type]; //echo '<pre>error: ', $element->getEngine()->GetLastError(), '</pre>'; //echo '<pre>warn : ', $element->getEngine()->GetLastWarning(), '</pre>'; print_r($element->results); exit; /* $frls = $element->results; $size = $element->total; $works = $element->works;*/