我正在使用SetFilter命令:
$mycategoryids = "345,366,456,444,789,345";
$cl->SetFilter( 'thecatid', array( $mycategoryids ));
然而,在我得到的结果中,他们都有345作为他们的主要或次要类别,因此看起来因为345是该数组中的第一个数字,所以给予更多(如果不是全部)权重。难道我做错了什么?我认为在该数组中包含所有这些数字只会意味着sphinx只会抓取包含“thecatid”中的其中一个数字的项目,这样如果有这样的项目:
[thecatid] => Array
(
[0] => 444
[1] => 552
[2] => 554
[3] => 566
)
然后它仍应显示在结果中,因为444位于项目的'thecatid'数组中,而444也位于过滤器调用中。
我错过了什么吗?
哦,为了确保我的查询是正确的,我在查询中有:
SELECT u.ID,u.Downloads as downloads, CONCAT_WS(',', u.catID, u.CatID1, u.CatID2, u.CatID3) as thecatid, ...
然后在下面:
sql_attr_multi = uint thecatid from field;
谢谢!
克雷格
答案 0 :(得分:1)
$mycategoryids = "345,366,456,444,789,345";
$cl->SetFilter( 'thecatid', array( $mycategoryids ));
这不是有效的代码。您需要传递setFilter 数字数组。不是包含单个字符串的数组。
这两个都更好......
$mycategoryids = array(345,366,456,444,789,345);
$cl->SetFilter( 'thecatid', $mycategoryids);
或
$mycategoryids = "345,366,456,444,789,345";
$cl->SetFilter( 'thecatid', explode(',',$mycategoryids) );