我正在使用sphinx 2.1.4
我正在用sphinx搜索以下方法,
首先::
使用此查询在php中通过PDO使用sphinxql
SELECT * FROM $indexes WHERE MATCH(:match) LIMIT 0,10 OPTION ranker=bm25
现在,当我使用sphinxapi.php进行同样的安装时,排名模式似乎只能像 SPH_RANK_MATCHANY 一样工作。通过api更改排名模式不起作用,它会产生相同的结果。
这是api实现::
$conn = new SphinxClient();
$conn->SetServer("192.168.x.x", 9312);
$conn->SetMatchMode(SPH_MATCH_ANY);
$conn->SetRankingMode(SPH_RANK_BM25);
$conn->SetArrayResult(true);
$rows = $conn->Query('query', 'test1');
查询方法似乎有效,但不是api。我检了几次。有没有错误或者我做错了什么?
答案 0 :(得分:2)
SetRankingMode仅在您使用SPH_MATCH_EXTENDED
时有效SphinxQL是始终扩展匹配模式 - 它是唯一支持的模式(可能可以通过N未记录的OPTION更改匹配模式,但不推荐)
要清楚匹配模式和排名模式是两回事。不同匹配模式的概念已经过折旧,因此未在SphinxQL中公开。
如果您真的想使用API,建议您坚持使用SPH_MATCH_EXTENDED - 不要被其他模式诱惑。