发布这个,所以我可以在几个小时的搜索中保存一些其他可怜的傻瓜,或者更好的是,从MySQL领域比我聪明的人得到更好的答案。 ; - )
当使用FULLTEXT索引搜索MySQL时,我是否可以指定我只想要以特定字符串开头或结尾的匹配?
本质上,我想要
的行为SELECT `idColumn` FROM `someTable` WHERE `textColumn` LIKE '%foo';
一个简单的索引和上面的查询不会这样做,因为MySQL不会将索引用于以通配符开头的查询。所以我添加了一个FULLTEXT索引,并开始查询类似:
SELECT `idColumn` FROM `someTable` WHERE MATCH(`textColumn`) AGAINST ('foo');
接近,但匹配textColumn
中的“foo”。
编辑:这是MySQL 5.6.1上的InnoDB表
如何限制它仅在最后(或开始)匹配?
答案 0 :(得分:3)
到目前为止我提出的最佳答案(部分受https://stackoverflow.com/a/6289012/977046启发)是使用HAVING子句来过滤我的全文结果,la:
SELECT `idColumn` FROM `someTable`
WHERE MATCH(`textColumn`) AGAINST ('foo')
HAVING `textColumn` LIKE ('%foo');