狮身人面像分组依据

发布于 2024-08-19 17:10:15 字数 782 浏览 5 评论 0原文

我们将对此进行说明,请耐心等待。

这是我的 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”时,我试图从 sphinx 获取的内容是这样的:

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 可以用来解决这个问题,但我很无能。非常感谢帮助!谢谢!

Going to illustrate this so please bear with me.

This is my MYSQL Table structure indexed by sphinx

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

What I'm trying to get from sphinx when I query "love" is something like this:

love = 2 hit
lover = 1 hit

Anyone has any idea how that can be done? I tried the following php code but all it output is just a bunch of tag_id for 'love'

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

I even tried this but it didn't work as well

$cl->setGroupDistinct('tag');

I think sphinx's group by can be used to solve this but I'm pretty clueless. Help is greatly appreciated! Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2024-08-26 17:10:15

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

SELECT COUNT(DISTINCT tag)
FROM my_tags
GROUP BY tag

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

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

I don't think you want to use setGroupDistinct on the same attribute you're grouping by. In SQL terminology that would be similar to:

SELECT COUNT(DISTINCT tag)
FROM my_tags
GROUP BY tag

which as far as I can tell would only return 1 match for each tag.

I think if you just remove the call to setGroupDistinct or change the distinct field to be the foreign id (thus filtering out multiple identical tags attached to one entry) you'll be good to go.

物价感观 2024-08-26 17:10:15

如果你想对标签进行计数并按 desc 顺序排列,你应该在 setGroupBy 函数中添加额外的子句。

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

If you want to count the tag and order desc.you should add extra clause to setGroupBy function.

$cl->setGroupBy('tag', SPH_GROUPBY_ATTR,'@count desc');
$result = $cl->query('');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文