MySQL FULLTEXT 在字符串的开头或结尾搜索单词

Ric*_*che 3 mysql full-text-search

发布这篇文章,这样我也许可以从几个小时的搜索中拯救一些其他可怜的人,或者更好的是,从在 MySQL 领域比我更聪明的人那里得到更好的答案。;-)

在使用 FULLTEXT 索引搜索 MySQL 时,如何指定我只想要以特定字符串开头或结尾的匹配项?

本质上,我想要的行为

SELECT `idColumn` FROM `someTable` WHERE `textColumn` LIKE '%foo';
Run Code Online (Sandbox Code Playgroud)

一个简单的索引和上面的查询是行不通的,因为 MySQL 不会将索引用于以通配符开头的查询。所以我添加了一个 FULLTEXT 索引并开始使用以下内容进行查询:

SELECT `idColumn` FROM `someTable` WHERE MATCH(`textColumn`) AGAINST ('foo');
Run Code Online (Sandbox Code Playgroud)

接近,但匹配 'foo' 中的任何地方textColumn

编辑:这是 MySQL 5.6.1 上的 InnoDB 表

如何将其限制为仅在结尾(或开头)匹配?

Ric*_*che 6

到目前为止我想出的最佳答案(部分灵感来自/sf/answers/440230871/)是使用 HAVING 子句来过滤我的全文结果,a la:

SELECT `idColumn` FROM `someTable` 
WHERE MATCH(`textColumn`) AGAINST ('foo')
HAVING `textColumn` LIKE ('%foo');
Run Code Online (Sandbox Code Playgroud)