要说明这一点,请耐心等待。
这是我用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的小组可以用来解决这个问题,但我很无能为力。非常感谢帮助!谢谢!
答案 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('');