有一个表,其中包含站点URL。 我想以某种方式对Sphinx结果进行排序:“关键字越接近字符串的开头 - 越相关”
“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");
不幸的是,我得到了按ID排序的结果。
答案 0 :(得分:0)
嗯,不要以为狮身人面像可以直接做到这一点。有各种排名因素,但都基于单词。
可以使用'min_prefix_len'匹配部分单词,但是无法获得'匹配发生的单词',以便能够对其进行排名。
唯一的方法是可以使用sphinx,也就是使用wordbreaker 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