2012-12-30 29 views
0

我试图运行这样一个简单的查询:MySQL全文问题 - 如何匹配相同查询中的两列?

SELECT *, 
MATCH(`col1`,`col2`) 
AGAINST ('some text') AS score 
FROM `mytable` ORDER BY score DESC 

这总是给人错误:

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

但是,如果我分裂列,并做两个查询是这样的:

SELECT *, 
MATCH(`col1`) 
AGAINST ('some text') AS score 
FROM `mytable` ORDER BY score DESC 

和:

SELECT *, 
MATCH(`col2`) 
AGAINST ('some text') AS score 
FROM `mytable` ORDER BY score DESC 

那就行了。为什么我不能同时对两栏进行匹配?我看到这样的manual的例子几乎一模一样的事情是这样的:

mysql> SELECT id, body, MATCH (title,body) AGAINST 
    -> ('Security implications of running MySQL as root') AS score 
    -> FROM articles WHERE MATCH (title,body) AGAINST 
    -> ('Security implications of running MySQL as root'); 
+0

请在手册上查看。 'CREATE TABLE articles'中的'FULLTEXT(标题,正文)' – Srinivas

回答

3

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

你需要有两个列FULLTEXT指数一起。 FULLTEXT (col1,col2)

+1

啊。谢谢--- –

+1

有时你需要的是全新的面貌。一直伴随着我:) – Srinivas

2

你需要有符合您查询的字段的索引。从docs

The MATCH() column list must match exactly the column list in some FULLTEXT index definition for the table,