2011-04-03 95 views
1

我有一个沼泽标准的MySQL全文查询,如下:MySQL全文索引不会超过一个领域的工作

SELECT * FROM accounts WHERE MATCH(first_name, username) AGAINST ('stringhere')

的问题是,它无法找到场上first_name全文索引,尽管我现在已经索引了几次。

SELECT * FROM accounts WHERE MATCH(username) AGAINST ('stringhere')

或者这样:

SELECT * FROM accounts WHERE MATCH(first_name) AGAINST ('stringhere')

但不能与两个或多个字段,当我做到这一点,它工作正常。我在这里做错了什么?我做了一定的索引上的字段设置,我甚至已经修好的表,但仍然没有worky :-(

我使用多个字段时,得到这样的结果:

Error in query: Can't find FULLTEXT index matching the column list

这是混乱和刺激性,因为就像我说的,我已经明确限定全文索引。

感谢您的帮助,

詹姆斯

回答

5

看到

show create table accounts 

输出我想你有类似

FULLTEXT(first_name) 
FULLTEXT(username) 

,而不是

FULLTEXT(first_name,username) 
+0

你说得这将是有益的:'全文键'username' ('username'),FULLTEXT KEY'first_name'('first_name')'。我添加了所有我需要的字段,现在效果很好。谢谢! – Bojangles 2011-04-03 14:35:38

+0

您必须列出您希望包含在全文搜索中的所有列,正如我在答复的最后一行中所写的那样。删除您的索引并以正确的方式重新创建一个新索引。 – 2011-04-03 14:39:31