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

时间:2013-12-16 21:13:38

标签: mysql full-text-search

发布这个,所以我可以在几个小时的搜索中保存一些其他可怜的傻瓜,或者更好的是,从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表

如何限制它仅在最后(或开始)匹配?

1 个答案:

答案 0 :(得分:3)

到目前为止我提出的最佳答案(部分受https://stackoverflow.com/a/6289012/977046启发)是使用HAVING子句来过滤我的全文结果,la:

SELECT `idColumn` FROM `someTable` 
WHERE MATCH(`textColumn`) AGAINST ('foo')
HAVING `textColumn` LIKE ('%foo');