代码之家  ›  专栏  ›  技术社区  ›  Paolo

这个sphinx的sql语句有什么问题吗?

  •  0
  • Paolo  · 技术社区  · 7 年前

    为了提供一个背景,我使用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语句在通过系统运行时不起作用并返回错误,但在自行运行时起作用。

    希望有人能帮忙。

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   danblack    7 年前

    斯芬克斯,或 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';