php - sphinx按不同字段过滤

标签 php mysql centos sphinx

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

sql_query = select id,用户名,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 > 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是基于的?)

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

关于php - sphinx按不同字段过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068649/

相关文章:

java - 使用 mysql、google map 进行 Web 应用程序所需的提示,

gcc - 32 位构建于 64 位 CentOS 5 主机上

mysql - Ruby 的 have_header 方法在哪里寻找头文件?

php - 如何在使用nginx的centos服务器中清除laravel应用程序的缓存

php - 从表单更新mysql表-php

javascript - PHP 或 JavaScript 迭代无限数量的数组

php - 在 Controller View 中显示变量

php - 使用 php 搜索 mysql,如何在用户的搜索字符串中产生(和、或、不)功能?

MySQL ORDER BY 和 GROUP BY

MySQL 合并所有表的编码