所以我在MySQL全文中创建精确搜索时遇到了一些困难。
在我的数据库中,我试图找到标题中包含特定关键字的作业。
所以我可以试试
"sales"
但是,这会在"fs sales"
上找到匹配项,而不是"fs sales"
如何确保"fs sales"
与"sales"
完全匹配,而不是{{1}}?
表是InnoDB供参考。
答案 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的记录..