首页 > 解决方案 > Sphinx 的这个 SQL 语句有什么问题吗?

问题描述

只是为了提供背景,我正在使用 Sphinx 通过 PHP/MySQL 进行搜索。这是通过我们拥有的系统运行的。这是有问题的 SQL 语句:

select * from [TABLE_NAME] where match('@keywords "homeschooling"') and status = 3 order by rand() limit 25

我在上述声明中遇到了这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

但是,如果我使用那个确切的语句并自己运行它,它确实有效!所以我不确定问题是什么。

回顾一下,SQL 语句在通过系统运行时不起作用并返回错误,但在自身运行时起作用。

希望有人可以提供帮助。

谢谢!

标签: phpmysqlsphinx

解决方案


Sphinx 或SphinxSE不使用 MySQL 的全文搜索语法。

创建 Sphinx 引擎表后:

CREATE TABLE t1
(
    id          BIGINT UNSIGNED NOT NULL,
    weight      INTEGER NOT NULL,
    query       VARCHAR(3072) NOT NULL,
    group_id    INTEGER,
    INDEX(query)
) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/test";

字符串的查询部分对应于用于搜索的 sphinx 语法:

SELECT * FROM t1 WHERE query='test it;mode=any';

推荐阅读