【问题标题】:MATCH AGAINST with multiple columns in MySQLMATCH AGAINST 与 MySQL 中的多个列
【发布时间】:2015-07-12 00:58:14
【问题描述】:

我正在尝试创建一个简化的搜索框,它将多个列与用户输入的一个或多个关键字进行匹配。以下代码是我尝试使用 MySQL 的MATCH/AGAINST。但是,当指定了两列时,我无法正确执行查询,在本例中为“主题,国家”。当我将代码作为“国家”或“主题”运行时,它将执行,但不能同时运行。

这有什么秘密吗?

SELECT * ,
MATCH (
topic, country
)
AGAINST (
'China'
) AS score
FROM reports2
WHERE MATCH (
topic, country
)
AGAINST (
'China'
)
ORDER BY score DESC

产量:

#1191 - Can't find FULLTEXT index matching the column list

我发现这是对错误的不准确描述,因为这两个都有 FULLTEXT 索引。为了做到这一点,我什至复制了表,将其从 INNODB 转换为 MyISAM。

任何建议将不胜感激。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您不需要每列的全文索引,但需要一个涵盖两列的全文索引

    FULLTEXT_INDEX(topic, country)
    

    在每一列上都有一个索引将工作

    FULLTEXT(topic); FULLTEXT(country); /* will not work as expected */
    

    我也认为顺序很重要,但在这方面我可能会弄错

    【讨论】:

    • 感谢您的回答,我想这是我在您考虑时犯的一个愚蠢的错误。 :)
    猜你喜欢
    • 2012-05-22
    • 2013-01-24
    • 1970-01-01
    • 2019-07-25
    • 2012-03-15
    • 2011-11-10
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多