我有一个包含FULLTEXT 索引的列内容的表。
我想利用MATCH()处理大文本的速度。
我希望搜索尽可能准确。
当我以这种方式搜索短语字符串“大卡车”时:
SELECT * FROM MyTable WHERE MATCH(content) AGAINST('"large truck"' IN BOOLEAN MODE);
有些事例被遗漏了。
我的表:
| content |
----------------
|Large \n truck| FOUND ✓
----------------
|large truck | FOUND ✓
----------------
|large trucks | *PLURAL MISSED!
----------------
|large truckl | *TYPE-O MISSED!
如果我使用标准的LIKE /通配符方法:
SELECT * FROM `MyTable` WHERE `content` LIKE '%large truck%'
我的表:
| content |
----------------
|Large \n truck| *MISSED!
----------------
|large truck | FOUND ✓
----------------
|large trucks | FOUND ✓
----------------
|large truckl | FOUND ✓
看来我也不能将 PHRASE 搜索与通配符一起使用:
SELECT * FROM MyTable WHERE MATCH(content) AGAINST('"large truck*"' IN BOOLEAN MODE); **DOES NOT WORK**
或者
SELECT * FROM MyTable WHERE MATCH(content) AGAINST('"large truck"*' IN BOOLEAN MODE); **DOES NOT WORK**
所以...
如何成功使用 MATCH() AGAINST() 搜索短语,并返回所有实例 - 甚至不区分大小写的部分字符串匹配?