我在centos6.5上使用coreseek 4.1。像这样的coreseek配置文件:sql_query = select id,username,ordersn,addtime from order where ispay=1;
我该如何选择在一定时间内订购num> 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中。