2013-12-16 69 views
1

张贴这一个结束的话,所以我或许可以从搜索,或者几个小时节省一些其他的可怜虫更好,但在境界有人比我更聪明得到更好的答案MySQL的。 ;-)MySQL的全文搜索在开头或字符串

如何,使用FULLTEXT索引搜索MySQL时,我可以指定我只想与开头或特定字符串结束比赛吗?

从本质上说,我要的

SELECT `idColumn` FROM `someTable` WHERE `textColumn` LIKE '%foo'; 

一个简单的索引和上面的查询不会做的行为,因为MySQL不会使用与通配符查询开始的索引。所以我增加了一个FULLTEXT指数,并开始与类似查询:

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

它靠拢,但比赛“富”在textColumn任何地方。

编辑:这是在MySQL 5.6.1

一个InnoDB表我如何可以限制只在最后匹配(或启动)?

回答

3

最佳答案我想出迄今(由https://stackoverflow.com/a/6289012/977046激发了一部分)是使用HAVING子句来过滤我的全文结果,一拉:

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

这实际上是相当不错的... – DaSourcerer

+0

要命这个逻辑对我来说也是为了获取startwith行而工作的 – Hari