Dar*_*viæ 2 mysql full-text-search
我正在尝试从此查询中获取结果
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误 #1191 - Can't find FULLTEXT index matching the column list
当我在MATCH中只放置一列时它正在工作,MATCH中的两列或多列不起作用.我见过有人这样做.
Bil*_*win 12
名为inside的列MATCH()必须与先前为FULLTEXT索引定义的列相同.也就是说,索引中的列集必须与调用时的列相同MATCH().
因此,要搜索两列,必须以相同的顺序在相同的两列上定义FULLTEXT索引.
以下是可以的:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
以下是错误的,因为MATCH()引用了两列,但索引仅为一列定义.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
以下是错误的,因为MATCH()引用了两列,但索引是为三列定义的.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2, column3);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
以下是错误的,因为MATCH()引用了两列,但是为一列定义了每个索引.
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1);
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column2);
SELECT ID FROM table1 WHERE MATCH(column1, column2) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
以下是错误的,因为MATCH()引用了两列,但顺序错误:
ALTER TABLE tabl1 ADD FULLTEXT INDEX (column1, column2);
SELECT ID FROM table1 WHERE MATCH(column2, column1) AGAINST ('text')
Run Code Online (Sandbox Code Playgroud)
总之,使用MATCH()必须以相同的顺序引用与一个全文索引定义完全相同的列.
| 归档时间: |
|
| 查看次数: |
3038 次 |
| 最近记录: |