【问题标题】:PHP/MYSQL match against queryPHP/MYSQL 匹配查询
【发布时间】:2012-05-30 19:19:39
【问题描述】:

我正在尝试对查询进行匹配,但它不起作用。我在这两个字段上创建了一个全文索引。但是在“关系”一词之前出现 sql 错误。这是 sql:

"SELECT * FROM pages WHERE MATCH (shdescript,ldescript) AGAINST (romance, relationship)";

我也试过只搜索 shdescript 和只搜索 ldescript 但得到同样的错误。我也试过不带空格的搜索字符串。据我所知,您应该在括号中用逗号分隔搜索字符串的单词。我究竟做错了什么?谢谢。

【问题讨论】:

    标签: mysql match against


    【解决方案1】:

    在搜索字符串周围添加引号。

    【讨论】:

    • 做到了。相关问题:我可以使用连接查询与另一个表中的列进行匹配吗?不知道我将如何创建索引,但这会对事情有很大帮助。还不能接受答案
    • 你应该把它作为一个单独的问题来问。
    【解决方案2】:
    "SELECT * FROM pages WHERE MATCH (shdescript,ldescript) AGAINST ('romance', 'relationship')";
    

    还要确保保护自己免受令人讨厌的 SQL 注入威胁,阅读更多 here

    【讨论】:

      【解决方案3】:

      尝试引用您的字符串(即“浪漫”和“关系”)

      SELECT * FROM pages WHERE MATCH (shdescript,ldescript) AGAINST ('romance', 'relationship')
      

      【讨论】:

        【解决方案4】:

        我相信您的AGAINST 必须用引号引起来。来自:

        http://dev.mysql.com/doc/refman/4.1/en/fulltext-search.html#function_match

        AGAINST 接受一个要搜索的字符串和一个可选的修饰符 指示要执行的搜索类型。搜索字符串必须是 文字字符串,而不是变量或列名。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-10
          • 1970-01-01
          • 2014-10-18
          • 2012-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-18
          相关资源
          最近更新 更多