Php sphinx滤波器

Php sphinx滤波器,php,mysql,centos,sphinx,Php,Mysql,Centos,Sphinx,我在centos6.5上使用coreseek 4.1。coreseek配置文件如下: [18] => Array ( [id] => 238041 [weight] => 1 [attrs] => Array ( [ordersn] => 0

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

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

            )
sql\u query=从订单中选择id、用户名、ordersn、addtime,其中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.when我删除
$s->SetFilterRange(“@distinct”,1099999)它返回1261找到的总数,有些结果如下:

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

            )

这意味着有人的订单num>10。但是我如何通过sphinx(coreseek)找到他们呢?

这在SphinxQL中应该是可能的:

SELECT *,COUNT(DISTINCT ordersn) AS orders FROM my_index GROUP BY user HAVING orders >= 10 
自2.2.1-beta版起,其中有一个“HAVING”条款。(我认为coreseek 5基于什么?)


据我所知,斯芬克萨皮从未添加过这一点

由于某些原因,我无法计算SphinxQL中的订单数。它需要连接许多表,并且它将根据addtime进行更改。因此,我必须根据sphinxAPI计算订单数,并使用addtime进行过滤。无论如何,很多TK!找出“某些原因”。您应该能够像通过API一样在sphinxQL中完成所有操作。如果可以通过API计算订单,那么也可以通过SphinxQL。它们只是同一查询引擎的“通信”媒介。