2013-04-25 2 views
0

스핑크스가 반환 한 결과를 사용하여 하위 문자열을 검색하고 싶습니다.SPHINX enable_star not working

제 설정은 괜찮습니까?

searchd 프로세스를 다시 시작해야합니까?

index dev_jobs 
{ 
    source  = dev_jobs_src 
    path  = /home/sphinx/jobs/dev_jobs 
    docinfo  = extern 
    charset_type = utf-8 
    enable_star = 1 
    min_infix_len = 3 
} 

searchd 
{ 
    port  = 9312 
    log  = /var/log/sphinx/searchd.log 
    query_log = /var/log/sphinx/query.log 
    read_timeout = 5 
    max_children = 30 
    pid_file = /var/run/sphinx/searchd.pid 
    max_matches = 100000 
    seamless_rotate = 1 
    preopen_indexes = 0 
    unlink_old = 1 
} 

코드의 PHP 부분 :

$sphinx_search = Yii::app()->search; 
     $sphinx_search->setSelect('*'); 

     $sphinx_search_final = ''; 

     $sphinx_search_query = trim($this->q); 
     if (strlen($sphinx_search_query) > 0) { 
      $sphinx_search_query = str_replace('-', ' ', $sphinx_search_query); 
      $keys = explode(' ', $sphinx_search_query); 
      foreach ($keys as $k => $key) { 
       if ($key) { 
        $keys[$k] = $key; 
       } else { 
        unset($keys[$k]); 
       } 
      } 
      if (count($keys) > 0) { 
       $sphinx_search_final = ' @(position_name,employer_name,employer_first_name,employer_last_name,employer_position) ' . $sphinx_search_query . 
         ' @(position_name,employer_name,employer_first_name,employer_last_name,employer_position) ' . implode('|', $keys); 
      } 
     } 

답변

2

내가 searchd 프로세스를 다시 시작해야합니까?

더 중요한 것은 색인을 다시 작성해야한다는 것입니다. --rotate를 사용하면 searchd에 색인을 다시로드하라는 메시지가 표시됩니다.

+0

그래서 모든 프로세스를 다시 시작해야합니다. –

+0

인덱스를 다시 작성해야합니다. searchd를 다시 시작해야 할 필요는 없지만 새 인덱스를로드하도록 지시해야합니다 (다시 시작하면됩니다.하지만 재로드는 일반적으로 검색을 방해하지 않으므로 더 좋습니다). – barryhunter