首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在sphinx中计算结果?

如何在sphinx中计算结果?
EN

Stack Overflow用户
提问于 2011-04-19 17:02:47
回答 3查看 11.1K关注 0票数 1

我必须处理有很多结果的查询,但我只以20-30行为一组来显示它们。

然后,我使用php API中的SetLimits()方法。

但我需要知道结果总数是多少,才能计算页数(或结果集)

我现在唯一能做到这一点的方法是通过将限制设置为10000000来提取所有结果,并查看sphinx返回的数组的'total‘键中有什么,但这并不好,因为我只需要count()数字,我不想让sphinx创建一个包含所有id的巨大数组。

在mysql中执行select..count()查询是行不通的,因为sphinx中的索引数据总是不同的。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-19 19:08:56

SphinxClient:query不是在返回与您的请求相匹配的记录数量的数据吗?

据我所知," total“是指此请求返回的条目数(受SetLimit影响),total_found是匹配查询的结果总数(不受SetLimit影响)。

票数 4
EN

Stack Overflow用户

发布于 2011-04-19 17:47:21

根据手册:SphinxClient::setLimits

这应该能起到作用

代码语言:javascript
运行
复制
  $cl->SetLimits(0,0);

我不是Sphinx开发人员,所以这只是一个盲目的猜测...它应该避免出现大量结果的内存溢出。

让我知道它是否工作,以便我可以删除答案,如果这是不正确的。

我还发现SELECT..COUNT()在Sphinx query中不能工作,所以这一点你是对的。

此外,根据Sphinx文档,您可以使用SHOW META query检索大量结果。

显示元数据

SHOW META显示有关最新查询的其他元信息,如查询时间和关键字统计信息:

代码语言:javascript
运行
复制
mysql> SELECT * FROM test1 WHERE MATCH('test|one|two');
+------+--------+----------+------------+
| id   | weight | group_id | date_added |
+------+--------+----------+------------+
|    1 |   3563 |      456 | 1231721236 |
|    2 |   2563 |      123 | 1231721236 |
|    4 |   1480 |        2 | 1231721236 |
+------+--------+----------+------------+
3 rows in set (0.01 sec)

mysql> SHOW META;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| total         | 3     |
| total_found   | 3     |
| time          | 0.005 |
| keyword[0]    | test  |
| docs[0]       | 3     |
| hits[0]       | 5     |
| keyword[1]    | one   |
| docs[1]       | 1     |
| hits[1]       | 2     |
| keyword[2]    | two   |
| docs[2]       | 1     |
| hits[2]       | 2     |
+---------------+-------+
12 rows in set (0.00 sec)

参考:

  • Sphinx: SHOW META syntax
  • SphinxClient::setLimits
票数 4
EN

Stack Overflow用户

发布于 2012-07-05 18:15:41

代码语言:javascript
运行
复制
SELECT VARIABLE_NAME, VARIABLE_VALUE
FROM information_schema.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE 'SPHINX_TOTAL_FOUND';

了解更多信息

代码语言:javascript
运行
复制
SELECT VARIABLE_NAME, VARIABLE_VALUE
FROM information_schema.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE 'SPHINX_%';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5713969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档