sphinx GROUP BY

时间:2010-02-01 16:16:34

标签: php sphinx

要说明这一点,请耐心等待。

这是我用sphinx索引的MYSQL表结构

------- ------- --------------
tag_id | tag   | foreign_id  |
------- ------- --------------
1       love     111
2       blue     222
3      lover     333
4       yellow   444
5       love     555
6       lov      666

当我查询“爱”时,我想从狮身人面像中得到的是这样的:

love = 2 hit
lover = 1 hit

任何人都知道如何做到这一点?我尝试了下面的PHP代码,但它输出的只是一堆tag_id的'love'

$cl->setGroupDistinct('tag');
$cl->setGroupBy('tag', SPH_GROUPBY_ATTR);  
$cl->SetLimits( 0, 10, 500);
$result = $cl->query("love", 'mytags');

我甚至尝试了这个,但它没有效果

$cl->setGroupDistinct('tag');

我认为sphinx的小组可以用来解决这个问题,但我很无能为力。非常感谢帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你不想在你所分组的同一属性上使用setGroupDistinct。在SQL术语中类似于:

SELECT COUNT(DISTINCT tag)
FROM my_tags
GROUP BY tag

据我所知,每个标签只返回1个匹配。

我认为如果您只是删除对setGroupDistinct的调用或将distinct字段更改为外来ID(从而过滤掉附加到一个条目的多个相同标记),那么您将会很高兴。

答案 1 :(得分:0)

如果你想计算标签和订单desc.you你应该为setGroupBy函数添加额外的子句。

$cl->setGroupBy('tag', SPH_GROUPBY_ATTR,'@count desc');
$result = $cl->query('');