2013-04-25 66 views
0

我希望使用sphinx返回的結果來搜索子字符串。SPHINX enable_star不工作

我的設置是否正常?

是否需要重新啓動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

所以我需要重新啓動所有進程 – 2013-04-25 13:51:45

+0

你需要重建索引。你不需要*來'重新啓動'searchd,但你需要告訴它加載你的新索引(重新啓動確實是這樣做的,但重新加載通常更好,因爲它不會中斷搜索)。 – barryhunter 2013-04-25 14:48:23