MATCH AGAINST与MySQL中的多个列

时间:2011-12-06 21:14:44

标签: mysql

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

这有秘密吗?

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,以便这样做。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:6)

您不需要每列的全文索引,而是需要覆盖两列的单个全文索引

FULLTEXT_INDEX(topic, country)

每列上都有一个索引工作

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

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