Sphinx通配符搜索不起作用

时间:2010-08-03 22:21:44

标签: codeigniter sphinx wildcard

我使用了以下代码:

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

在我的数据库中有一个标题为“实习生”的作业但是,如果我搜索“inter”,我就不会得到任何结果。

我的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
}

有谁能告诉我为什么我没有得到部分字结果?

1 个答案:

答案 0 :(得分:0)

我从未发现Sphinx在不使用星星的情况下返回部分匹配。我同意它不是特别直观(当然,如果前缀被索引,那么匹配吗?),但是如果你想确保总是得到结果,那么在每个单词的末尾添加一个星号。