【发布时间】:2020-10-31 17:22:07
【问题描述】:
我有一个表,其列 content 具有 FULLTEXT 索引。
我想利用 MATCH() 处理大文本的速度。
我希望搜索尽可能准确。
当我以这种方式搜索短语字符串“large truck”时:
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() 搜索短语,并返回所有实例 - 甚至 不区分大小写的部分字符串匹配?
【问题讨论】:
标签: mysql string match match-against against