Показать порядок данных по текущему поиску "term" в php - PullRequest
0 голосов
/ 09 июля 2019

Я работаю над поисковой системой в CodeIgniter, в настоящее время я ищу по нескольким таблицам, т.е. по категориям, подкатегориям, производителям, поиск работает нормально, но проблема в том, что я хочу показать данные в соответствии с текущим поиском (Заказ По текущему поиску, то есть «Дизельные генераторы 10 кВА»), я хочу показать лучшие результаты «Дизельные генераторы 10 кВА», а затем другие похожие поиски. Я попытался сделать заказ, перечислив ASC или DESC, но он не работал, потому что, если бы я использовал ASC и кто-то искал элемент и его можно было найти в конце таблицы, наоборот.

Вот мой код

Контроллер

$config["base_url"] = base_url() ."search";
$config["per_page"] = 20;//100;
$config["uri_segment"] = 2;
$config['suffix'] = '?' . http_build_query($_GET, '', "&");
$config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);
$this->load->library('pagination');
$this->pagination->initialize($config);
$page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
$filters = $this->filterWhereForModels();//filtering for models
$data['filters'] = $this->filterWhereForview();
$orderBy =  $this->orderByForSearch();//order by    
$countAdds = $this->modSearch->NewMachineSearchPaging($filters,$orderBy);
$config["total_rows"] =  $countAdds;
setCurrentURLInFlash();//setting current url with get variables in flashdata
$data["allNewMachines"] = $this->modSearch->
fatchAllMachineSearch($config["per_page"], $page,$filters,$orderBy);//,$orderBy
$data["links"] = $this->pagination->create_links();
$this->load->view('listing/generalSearch',$data);

Это моя модель

public function fatchAllMachineSearch($limit,$start,$filters = null,$orderBy = null)
{
$filters['machine_listing.mac_status'] = 1;
$this->db->cache_on();
$this->db->distinct();
//$this->db->limit($limit, $start);
$query = $this->db->select("
machine_listing.mac_id,
machine_listing.mac_purpose,
machine_listing.mac_machine_name,
machine_listing.mac_description,
machine_listing.mac_slug,
machine_listing.mac_date,
machine_listing.mac_manufacturer,
machine_listing.user_id,
machine_listing.mac_location,
machine_listing.mac_currency,
machine_listing.mac_price,
machine_listing.mac_condition,
categories.c_title,
users.u_company_name,
users.u_email,")
->from('machine_listing')
->where($filters)
->group_start()
->or_where("MATCH (mac_sku,mac_machine_name) AGAINST ('".$q."')")                       ->or_where("machine_listing.category_id IN(SELECT c_id from categories where c_title like '%".$q."%' and c_status = 1)")                        ->or_where("machine_listing.user_id IN (SELECT  u_id from users where u_company_name like '%".$q."%' and u_status = 1)")                        ->or_where("machine_listing.sub_category_id IN (SELECT sub_id from sub_categories where sub_title like '%".$q."%' and sub_status = 1)")                     ->or_where("machine_listing.mac_manufacturer IN (SELECT  man_id from manufacturers where man_title like '%".$q."%' and man_status = 1)")
->group_end()
->join('categories','categories.c_id = machine_listing.category_id')
->join('sub_categories','sub_categories.sub_id = machine_listing.sub_category_id','left')
->join('users','users.u_id = machine_listing.user_id')             
->join('manufacturers','manufacturers.man_id = machine_listing.mac_manufacturer','left')               
->order_by('machine_listing.mac_id','desc')
->get();            
$this->db->cache_off();
return $query->result_array();
}

Я ожидаю лучших результатов «Дизельные генераторы 10 кВА», а затем и других соответствующих результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...