【问题标题】:MySQL FULLTEXT search for words at beginning or end of stringMySQL FULLTEXT 在字符串的开头或结尾搜索单词
【发布时间】:2013-12-16 21:13:37
【问题描述】:

发布这个,这样我也许可以从几个小时的搜索中节省一些其他可怜的 sap,或者更好的是,从 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 表

如何限制它只在结尾(或开头)匹配?

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多