【问题标题】:Sphinx avg function from PHP-api来自 PHP-api 的 Sphinx avg 函数
【发布时间】:2015-07-17 20:21:36
【问题描述】:

我有这个mysql表:

CREATE TABLE person (id INT(6) AUTO_INCREMENT PRIMARY KEY,name    VARCHAR(30) NOT NULL,age int(4) NOT NULL);

我运行这些插入: 插入人的价值(空,'一',42); 插入人的价值(空,'二',49); INSERT INTO person VALUES(null, 'three', 16);

跑步:

select avg(age) from person;

给我“35.6”

然后我在 Sphinx 中索引这些表。现在我想在 Sphinx 中运行与我在 MySQL 中运行的查询相同的查询。 从命令行我发出这个命令:

select avg(age) from person_idx;

很好。即使在这里我也得到“35.6”。

现在解决问题。我需要从 PHP 运行这个查询。我正在使用 Sphinx-release 附带的 sphinxapi.php 脚本。 我看了一下文档并用谷歌搜索了很多。但我找不到从 PHP 运行这些函数(avg、sum 等)的方法。 有没有办法做到这一点?

在 PHP 中我有这个代码:

require('sphinxapi.php');
$client = new SphinxClient();
$res = $client->Query('', 'person_idx');   

我应该把 sql 查询的“select AVG(age)”部分放在哪里? sphinxapi.php 有一个可以调用的方法。但我看不到决定选择什么的方法。

【问题讨论】:

  • 从 php 运行是什么意思?您只需使用 php 库或 spinx 库运行查询
  • 我更新了我的问题。

标签: php mysql sphinx


【解决方案1】:

在 Query() 调用之前添加

$client->setSelect("AVG(age) AS avg_age");

setSelect 大致相当于 sphinxQL 的 'SELECT ...' 部分。但一般来说,您需要使用AS 来使用所有功能。

【讨论】:

  • 我正在使用 sphinxapi.php,它与 sphinx-server 一起发布。文档在这里:sphinxsearch.com/wiki/doku.php?id=php_api_docs 我无法设置函数“setSelect”。所以我猜你说的是在这里找到的 spix-api:php.net/manual/en/book.sphinx.php ?我更喜欢使用第一个,因为它是我现在用于所有应用程序的那个。但问题是该 API 中是否有等价的东西。
  • 嗯,该文档已经过时了“它是 Sphinx 0.9.8-r1065 的最新版本。”你真的在使用这么旧版本的狮身人面像吗???? (你不能因为它没有 sphinxql!)官方文档在这里:sphinxsearch.com/docs(选择你的版本)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多