2010-08-03 1 views
0

Я использовал следующий код:Sphinx поиска подстановочные не будет работать

function searchSphinx2($tofind,$jobtype_id,$payper_id,$onetimeBounds) 
    { 
     $this->load->library('session'); 
     $this->load->library('sphinxclient'); 
     global $result; 
     global $functionresult; 
     $functionresult=array(); 

     $this->sphinxclient->setServer('localhost', 3312); 
     $this->sphinxclient->SetMatchMode(SPH_MATCH_ANY); 
     $this->sphinxclient->SetIndexWeights(array("jobs_index_main"=>10, "jobs_index_delta"=>10,"jobs_index_prefix_main"=>1,"jobs_index_prefix_delta"=>1,"jobs_index_infix_main"=>1,"jobs_index_infix_delta"=>1)); 

     $this->sphinxclient->ResetFilters(); 
     $this->sphinxclient->SetFilter('jobtype_id',$jobtype_id,TRUE); 
     $this->sphinxclient->SetFilter('payper_id',$payper_id,TRUE); 
     $this->sphinxclient->SetFilterFloatRange('payamount', $ontimeBounds[0], $ontimeBounds[1], FALSE); 

     $this->sphinxclient->AddQuery("$tofind", "jobs_index_main;jobs_index_delta"); 
     $this->sphinxclient->AddQuery("*$tofind*", "jobs_index_main_prefix;jobs_index_delta_prefix"); 
     $this->sphinxclient->AddQuery("*$tofind*", "jobs_index_main_infix;jobs_index_delta_infix"); 
     $result = $this->sphinxclient->RunQueries(); 

В базе данных моей есть работа с названием «Intern» Тем не менее, если я ищу «между» я не получаю любые результаты.

Индексы в моем CONFI файле задаются следующим образом:

index jobs_index_prefix_main 
{ 
     source = jobs_main 
     path = /var/newsphinx/index/main_prefix 

     morphology = stem_en 
     min_stemming_len = 4 
     min_word_len = 3 
     min_prefix_len = 3 
     prefix_fields = title, contactname 
     enable_star =1 
} 

Может кто-нибудь сказать мне, почему я не получаю частичные результаты слова?

ответ

0

Я никогда не видел, чтобы Сфинкс возвращал частичные матчи без использования звезд. Я согласен, что это не особенно интуитивно (конечно, если индексы индексируются, есть совпадение?), Но если вы хотите, чтобы вы всегда получали результаты, добавьте звезду в конец каждого слова.