1

将说明这一点,所以请多多包涵。

这是我的由 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代码,但它输出的只是一堆'love'的tag_id

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

我什至尝试过,但效果不佳

$cl->setGroupDistinct('tag');

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

4

2 回答 2

0

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

SELECT COUNT(DISTINCT tag)
FROM my_tags
GROUP BY tag

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

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

于 2010-02-01T19:09:20.223 回答
0

如果要计算标签和顺序 desc.you 应该在 setGroupBy 函数中添加额外的子句。

$cl->setGroupBy('tag', SPH_GROUPBY_ATTR,'@count desc');
$result = $cl->query('');
于 2016-11-05T01:38:58.770 回答