如何解决如何计算狮身人面像的结果?
| 我必须处理具有很多结果的查询,但是我只以20-30行为一组显示它们。 然后,我使用PHP API中的SetLimits()方法。 但是我需要知道结果的总数,以计算页面数(或结果集) 我现在能做的唯一方法是通过将限制设置为10000000来获取所有结果,并查看sphinx返回的数组的'total \'键中的内容,但这不好,因为我只需要count()数字,我不希望使用狮身人面像来创建包含所有id的巨大数组。 在MysqL中执行select..count()查询将不起作用,因为sphinx中的索引数据始终是不同的。 有任何想法吗?解决方法
SphinxClient:query是否返回与您的请求相匹配的记录数的数据?
\“ total \”是此请求返回的条目数(受SetLimit影响),total_found是与查询匹配的结果总数(不受SetLimit影响)。,根据手册:SphinxClient :: setLimits,
这应该可以解决问题
$cl->SetLimits(0,0);
我不是Sphinx开发人员,所以这只是一个盲目的猜测...应该避免内存
大量结果溢出。
让我知道它是否有效,所以如果这不正确,我可以删除答案。
我还发现ѭ1在Sphinx查询中不起作用,因此您是正确的。
同样,根据Sphinx文档,您可以使用SHOW META查询来检索结果数量。
显示元
SHOW META显示有关最新查询的其他元信息,例如查询时间和关键字统计信息:
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语法
SphinxClient :: setLimits,SELECT VARIABLE_NAME,VARIABLE_VALUE
FROM information_schema.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE \'SPHINX_TOTAL_FOUND\';
了解更多信息
SELECT VARIABLE_NAME,VARIABLE_VALUE
FROM information_schema.GLOBAL_STATUS WHERE
VARIABLE_NAME LIKE \'SPHINX_%\';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。