2012-06-27 5 views
0

내 웹 사이트에서 검색 양식을 구현하려고합니다. 내 모델에서 다음과 같은 기능을 수행하는 CodeIgniter의 활동 기록 및 MySQL을 사용codeigniter에서 텍스트를 검색하는 방법?

:

내 데이터베이스에서
$search_query = 'charge fees for project'; 

    function get_search_results($search_query){ 
      $data = ''; 

      $this->db->like('title', $search_query); 
      $this->db->or_like('content', $search_query);    

      $query = $this->db->get('faq'); 

      foreach ($query->result() as $row) { 
       $data[] = array(
        'id' => $row->id, 
        'category' => $row->category, 
        'sub_category' => $row->sub_category, 
        'title' => $row->title, 
        'content' => $row->content, 
        'date' => $row->date 
       ); 
      } 

      return $data; 
    } 

나는 다음과 같은 데이터가 포함 된 행이 있습니다

row->title - What fees does the website charge? 
row->content - We charges total fees. When your account is successfully project created. 

내 검색 쿼리를 이러한 키워드가 제목과 내용 모두에 있어도 결과를 반환하지 않습니다. 내 검색어로 데이터베이스 항목의 키워드를 찾아 내고 결과를 반환하려면 어떻게합니까?

+0

'충전 수수료는 제목이나 내용에 전반적으로 표시되지 않습니다. –

+0

aaah .. 좋아. like를 사용하면 쿼리가 전체적으로 표시되어야합니다. 어떻게 쿼리를 키워드로 분할해야합니까? – hairynuggets

답변

2

당신은 search_query 변수를 분할해야한다. 코드 : project`에 대한

$this->db->like('title', $value, 'after');

+0

감사합니다. 제가 찾고있는 것이기 때문에 결과를 관련성별로 정렬하는 방법을 알고 있다고 생각하지 마십시오. 내 자신의 검색 엔진을 만드는 경로를 맞춰보세요. lol – hairynuggets

+0

스핑크스와 같은 기존 사이트를 사용해야합니다 : http://sphinxsearch.com/. 직접 건물을 짓는 데 훨씬 더 많은 시간이 필요합니다. –

0

사용 당신은 세 번째 매개 변수에 후 이전에 제공하기 위해 누락이 명령을주의 깊게

$this->db->like('title', $search_query); 

. 기본적으로이를 수행합니다. % my_string % 사용자 설명서를 읽으십시오. 내가 성능을 향상하기 위해 LIKEword%로를 사용하는 것이 좋습니다

$search_query_values = explode(' ', $search_query); 
$counter = 0; 
foreach ($search_query_values as $key => $value) { 
    if ($counter == 0) { 
     $this->db->like('title', $value); 
    } 
    else { 
     $this->db->or_like('title', $value); 
     $this->db->or_like('content', $value); 
    } 
    $counter++; 
} 
$query = $this->db->get('faq'); 

: 쿼리를 실행하기 전에

http://codeigniter.com/user_guide/database/active_record.html

+0

흠 .. 어떻게 문장 전체를 일치 시키려고하는 대신 내용에서 그 단어를 골라 낼 수 있습니까? – hairynuggets

+0

$ this-> db-> like ('title', $ search_query, after); // other is before // 사용자 가이드를 읽으십시오. 그렇지 않으면이 질문을하지 않을 것입니다. –

관련 문제