我正在尝试创建一个简化的搜索框,该搜索框将针对用户输入的关键字或关键字匹配多个列。以下代码是我尝试使用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,以便这样做。
任何建议都将不胜感激。
答案 0 :(得分:6)
您不需要每列的全文索引,而是需要覆盖两列的单个全文索引
FULLTEXT_INDEX(topic, country)
每列上都有一个索引不工作
FULLTEXT(topic); FULLTEXT(country); /* will not work as expected */
我也认为顺序很重要,但在这方面我可能会弄错