sphinx过滤器由不同的字段

时间:2015-12-03 14:32:32

标签: php mysql centos sphinx

我在centos6.5上使用coreseek 4.1。 coreseek配置文件:

sql_query = select id,username,ordersn,addtime from order where ispay=1;

我要选择订单数量为>的用户10之间的某段时间。

这是我的代码:

$s = new SphinxClient;
$s->setServer("localhost", 9312);
$s->setArrayResult(true);
$s->SetGroupDistinct("ordersn");
$s->SetGroupBy("username",SPH_GROUPBY_ATTR);
$s->SetFilterRange("@distinct", 10, 999999);
$result = $s->query('', 'my_index');

但它返回null。当我删除$s->SetFilterRange("@distinct", 10, 999999);时,它返回1261 total_found,有些像那样:

       [18] => Array
            (
                [id] => 238041
                [weight] => 1
                [attrs] => Array
                    (
                        [ordersn] => 0
                        [username] => 0
                        [addtime] => 1448959834
                        [@groupby] => 8980267602450089129
                        [@count] => 20
                        [@distinct] => 28
                    )

            )

测量有人的ordernum>但是,如何通过sphinx(coreseek)找到它们?

1 个答案:

答案 0 :(得分:0)

这应该可以在SphinxQL中使用:

SELECT *,COUNT(DISTINCT ordersn) AS orders FROM my_index GROUP BY user HAVING orders >= 10 

自2.2.1-beta以来有一个'HAVING'子句。 (我认为coreseek 5基于?)

据我所知,这从未被添加到SphinxAPI中。