2010-08-03 8 views
0

J'ai utilisé le code suivant:recherche générique Sphinx ne fonctionnera pas

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(); 

Dans ma base de données il y a un travail avec le titre « stagiaire » Cependant, si je recherche « inter » Je ne comprends pas des résultats

Les indices dans mon dossier confi sont mis en place comme suit:

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 
} 

Quelqu'un peut-il me dire pourquoi je ne reçois pas les résultats partiels de mots?

Répondre

0

Je n'ai jamais trouvé Sphinx pour retourner des correspondances partielles sans utiliser d'étoiles. Je suis d'accord que ce n'est pas particulièrement intuitif (sûrement si les préfixes sont indexés, il y a une correspondance?), Mais si vous voulez vous assurer d'obtenir toujours des résultats, ajoutez une étoile à la fin de chaque mot.