Поиск подстановочного знака сфинкса не будет работать - PullRequest
0 голосов
/ 04 августа 2010

Я использовал следующий код:

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

В моей базе данных есть работа с заголовком "Стажер". Однако, если я ищу "интер", я не получаю никаких результатов.

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

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
}

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

1 Ответ

0 голосов
/ 04 августа 2010

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

...