sphinx 按不同字段过滤
sphinx filter by distinct field
我在centos6.5上使用coreseek 4.1。这样的 coreseek 配置文件:
sql_query = select id,username,ordersn,addtime from order where ispay=1;
我想对 select 一段时间内订购数量 > 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');
但是它 return null.when 我删除了 $s->SetFilterRange("@distinct", 10, 999999);
它 return 1261 total_found, 有些结果是这样的:
[18] => Array
(
[id] => 238041
[weight] => 1
[attrs] => Array
(
[ordersn] => 0
[username] => 0
[addtime] => 1448959834
[@groupby] => 8980267602450089129
[@count] => 20
[@distinct] => 28
)
)
这意味着有人的订单号 > 10.But 我怎么通过 sphinx(coreseek) 找到他们的?
这在 SphinxQL 中应该是可能的:
SELECT *,COUNT(DISTINCT ordersn) AS orders FROM my_index GROUP BY user HAVING orders >= 10
有一个 'HAVING' 子句,从 2.2.1-beta 开始。 (我觉得coreseek 5是基于什么?)
据我所知,这从未被添加到 SphinxAPI 中。
我在centos6.5上使用coreseek 4.1。这样的 coreseek 配置文件:
sql_query = select id,username,ordersn,addtime from order where ispay=1;
我想对 select 一段时间内订购数量 > 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');
但是它 return null.when 我删除了 $s->SetFilterRange("@distinct", 10, 999999);
它 return 1261 total_found, 有些结果是这样的:
[18] => Array
(
[id] => 238041
[weight] => 1
[attrs] => Array
(
[ordersn] => 0
[username] => 0
[addtime] => 1448959834
[@groupby] => 8980267602450089129
[@count] => 20
[@distinct] => 28
)
)
这意味着有人的订单号 > 10.But 我怎么通过 sphinx(coreseek) 找到他们的?
这在 SphinxQL 中应该是可能的:
SELECT *,COUNT(DISTINCT ordersn) AS orders FROM my_index GROUP BY user HAVING orders >= 10
有一个 'HAVING' 子句,从 2.2.1-beta 开始。 (我觉得coreseek 5是基于什么?)
据我所知,这从未被添加到 SphinxAPI 中。