【问题标题】:MySQL Match issueMySQL匹配问题
【发布时间】:2012-02-15 14:31:21
【问题描述】:

参考我之前的 stackoverflow post 我正在尝试寻找通过以下方式发送的消息的相似之处:

SELECT id, MATCH (content) AGAINST (content) AS score FROM pms_messages WHERE sender_id = '.$sender_id.' AND MATCH (content) AGAINST (content) AND score > 1;

我看到错误:#1210 - AGAINST 的参数不正确

我在内容字段上设置了 FULLTEXT 索引。来自 phpmyadmin:

 Edit    Drop   fulltext_index  FULLTEXT    No  No  content 1

我错过了什么?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    当您收到错误消息时,请务必阅读手册,这很有帮助:

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

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

    因此,您尝试实现的目标是错误的。使用文字字符串而不是列名。

    另见11.9.5. Full-Text RestrictionsDocs,具体来说:

    • AGAINST() 的参数必须是常量字符串。

    【讨论】:

    • 我应该在获取内容之前执行查询,还是可以通过一次查询来完成?
    • 我无法告诉您应该做什么,但是我怀疑您是否可以通过单个查询来完成,因为您需要将其作为文字字符串传递。 stored procedure 可能会为您节省网络往返次数。我的意思是您不想来回传输所有文本只是为了获得分值,对吗?我可以给出的另一个提示是针对您的确切错误消息字符串进行谷歌搜索。这也可能会产生一些有用的结果(并非总是如此,但可能会提供一些想法)。
    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多