*实际*精确的MySQL全文搜索

时间:2015-08-26 11:18:44

标签: mysql full-text-search innodb

所以我在MySQL全文中创建精确搜索时遇到了一些困难。

在我的数据库中,我试图找到标题中包含特定关键字的作业。

所以我可以试试

"sales"

但是,这会在"fs sales"上找到匹配项,而不是"fs sales"

如何确保"fs sales""sales"完全匹配,而不是{{1}}?

表是InnoDB供参考。

3 个答案:

答案 0 :(得分:1)

" FS"可能被排除在搜索范围之外太短。

检查innodb_ft_min_token_size和手册:https://dev.mysql.com/doc/refman/5.6/en/fulltext-fine-tuning.html

的值

您必须在更改该变量后重建索引。

答案 1 :(得分:1)

您的查询应该有效。我的猜测是,你没有改变最小字长,所以“fs”从未编入索引。有关此信息,请参阅here

其他可能性是文本中还有其他字符,可能是您看不到的字符。

你可以试试这个

select t.*
from (select . . .
      WHERE MATCH(jobTitle) AGAINST ('+fs +sales' IN BOOLEAN MODE)
     ) t
where jobTitle like '%fs sales%';

这只是匹配返回集合上的like

但是,我最好的猜测是innodb_ft_min_token_size设置为默认值3,因此“fs”没有被编入索引。

答案 2 :(得分:0)

你可以像

那样做
 select col1, col2 from table_name where text_column like '%fs sales%'

这将返回所有在其中销售fs的记录..