Может кто-то видел, делал, знает как сделать поиск по jbzoo адекватным? Чтоб было релевантно Чтоб было с подсказками Чтоб был поиск по всем полям и всему тексту Чтоб был русский стеммер Чтоб был быстр Чтоб понимал djn nfrjt r ghbvthe - это
тему в раздел "юмор" Ну я тестил с разными: http://salonsuzana.ru/allcoupons.html Через хаки... Код (CODE): if($search){ $searchData = explode(' ', $search); $searchWhere = array(); $from .=' LEFT JOIN '. ZOO_TABLE_SEARCH .' AS s ON a.id = s.item_id'; foreach($searchData as $searchWord){ $searchWord =JString::trim($searchWord); $searchWhere[]= implode(' OR ', array( // 'LOWER(a.name) REGEXP ' . $this->db->Quote('^' . $this->db->escape($searchWord, true) . '', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . '$', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote(' ' . $this->db->escape($searchWord, true) . '', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . ' ', false), 'LOWER(a.name) REGEXP '. $this->db->Quote('[[:<:]]'. $this->db->escape($searchWord,true).'[[:>:]]',false) )); } $where[]='(('. implode(') AND (', $searchWhere).'))'; }
По сути это построение запроса же: Код (CODE): $from .=' LEFT JOIN '. ZOO_TABLE_SEARCH .' AS s ON a.id = s.item_id'; $searchWhere[]= implode(' OR ', array( // 'LOWER(a.name) REGEXP ' . $this->db->Quote('^' . $this->db->escape($searchWord, true) . '', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . '$', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote(' ' . $this->db->escape($searchWord, true) . '', false), // 'LOWER(a.name) REGEXP ' . $this->db->Quote('' . $this->db->escape($searchWord, true) . ' ', false), 'LOWER(a.name) REGEXP '. $this->db->Quote('[[:<:]]'. $this->db->escape($searchWord,true).'[[:>:]]',false) )); } //AND и то и то $where[]='(('. implode(') AND (', $searchWhere).'))'; }