Php 斯芬克斯集团

Php 斯芬克斯集团,php,sphinx,Php,Sphinx,我来说明一下,请耐心听我说 这是我的MYSQL表结构,由sphinx索引 ------- ------- -------------- tag_id | tag | foreign_id | ------- ------- -------------- 1 love 111 2 blue 222 3 lover 333 4 yellow 444 5 love 555 6 lov

我来说明一下,请耐心听我说

这是我的MYSQL表结构,由sphinx索引

------- ------- --------------
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代码,但它输出的只是一堆“love”的标签id

$cl->setGroupDistinct('tag');
$cl->setGroupBy('tag', SPH_GROUPBY_ATTR);  
$cl->SetLimits( 0, 10, 500);
$result = $cl->query("love", 'mytags');
我甚至试过这个,但效果不太好

$cl->setGroupDistinct('tag');

我认为狮身人面像的组别可以用来解决这个问题,但我对此一无所知。非常感谢您的帮助!谢谢

我认为您不希望在分组依据的同一属性上使用setGroupDistinct。在SQL术语中,类似于:

SELECT COUNT(DISTINCT tag)
FROM my_tags
GROUP BY tag
据我所知,每个标记只返回1个匹配项


我认为,如果您只是删除对setGroupDistinct的调用,或者将distinct字段更改为外部id,从而过滤掉附加到一个条目上的多个相同标记,您就可以开始了。

如果您想计算标记和订单描述,您应该向setGroupBy函数添加额外的子句

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