1

如果我运行 2 段代码来获得 Sphinx 结果:

PHP中的一个:

$host = \Config::get('sphinxsearch::host');
$port = \Config::get('sphinxsearch::port');
$s = new \Sphinx\SphinxClient();
$s->setServer($host, $port);
$sql = "SELECT * FROM essays,posts LIMIT  1, 15;";
var_dump($s->query( $sql, "essays,posts" ));

返回:5 行,总计数为 5 行(这是错误的)

然后在 SSH 中:

mysql -h0 -P9306
SELECT * FROM essays,posts LIMIT  1, 15

返回:15 行,总数为 3514 行(这是正确的)

MySQL 窗口正确地执行“essays,posts”。但使用SphinxClient::query不会。如果我做得很好FROM essaysSphinxClient::query

我环顾四周,发现很少。

我使用狮身人面像 2.1.7

谢谢!

4

1 回答 1

2

嗯,SphinxClient 类是用于SphinxAPI的。您直接通过 query() 函数进行全文搜索。不是 SQL 语句。

当你跑

 $sql = "SELECT * FROM essays,posts LIMIT  1, 15;";
 var_dump($s->query( $sql, "essays,posts" ));

您正在寻找包含“select”、“from”、“essays”、“posts”、“limit”、“1”和“15”等词的文档。只会返回包含所有这些单词的文档 - 您必须有 5 个包含所有这些单词的文档。

要获取所有文档,例如您的示例 $sql,您将使用

$s->setLimits(1,15);
var_dump($s->query( "", "essays,posts" ));

如果你想通过 SphinxQL 语法查询 sphinx,这有点模仿 mysql,那么你需要在你的代码中使用MySQL 客户端——而不是 Sphinx

客户。即使用mysqli、pdo 等来运行查询。

于 2014-04-24T16:21:34.123 回答