2014-11-08 59 views
0

有一张表,其中包含站点URL。 我想以某种方式对狮身人面像结果进行排序:“关键字到字符串的开头 - 更相关”靠近字符串的开头排序匹配

“foobar.com,barfoo.com,barbarfoo.com”是关键字“foo “

我曾尝试:

$s = new SphinxClient; 
$s->setServer("localhost", 9312); 
$s->SetMatchMode(SPH_MATCH_ALL); 
$s->SetSortMode(SPH_SORT_RELEVANCE); 
$s->SetFieldWeights(array(
         'id' => 0, 
         'url' => 1000, 
        )); 
$result = $s->query("foo"); 

不幸的是我得到的结果,通过编号的顺序排列。

回答

0

嗯,不要以为狮身人面像可以直接做到这一点。有各种排名因素,但都基于单词。

可以使用'min_prefix_len'匹配部分单词,但不能得到'匹配发生在单词的哪里',以便能够通过它进行排名。

的唯一方法也许能够获得与狮身人面像的工作,是使用分词系统 http://sphinxsearch.com/blog/2013/01/29/a-new-tool-in-the-trunk-wordbreaker/

索引你的域的名称作为单独的词。希望您的域名能够在“foo bar com”,“bar foo com”,“bar bar foo com”中正确拆分 - 然后可以按字位排序,例如min_hit_pos http://sphinxsearch.com/docs/current.html#field-factors