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 表
如何将其限制为仅在结尾(或开头)匹配?
到目前为止我想出的最佳答案(部分灵感来自/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)
| 归档时间: |
|
| 查看次数: |
4409 次 |
| 最近记录: |