我有以下全文索引:
FULLTEXT INDEX `title_short_description_description` (`title`, `short_description`, `description`)
当我运行以下查询时,我收到此错误:
无法找到与列列表匹配的FULLTEXT索引
select (
(match (title) against ('abc' in boolean mode) * 100) +
(match (short_description, description) against ('abc' in boolean mode))
) as score
from game_cache
where
match (title) against ('abc' in boolean mode) or
match (short_description, description) against ('abc' in boolean mode)
order by score desc
我认为这是因为我没有在同一场比赛中使用所有三列,而是在两场比赛之间将它们分开。我试过分离索引,但MySQL并不允许这样做。
有什么方法可以让这个查询有效吗?
答案 0 :(得分:2)
您需要为要使用MATCH
查询的每个不同列集创建单独的索引。
为了运行您的示例查询,您需要再添加两个FULLTEXT
索引(一次一个):
ALTER TABLE your_table
ADD FULLTEXT INDEX `index_on_title` (`title`);
ALTER TABLE your_table
ADD FULLTEXT INDEX `index_on_short_description_and_description`
(`short_description`, `description`);
如果您从未运行任何检查所有3列匹配的查询,那么您应该考虑删除现有的FULLTEXT
索引:
ALTER TABLE your_table
DROP INDEX `title_short_description_description`;