表
id name
--- ------
1 chinu
2 sanjib
3 chinmay我的MYSQL查询
SELECT * FROM users WHERE MATCH (name) AGAINST ('chi' IN BOOLEAN MODE)在上面的查询中,我得到了0记录。
我的输出就快到了
1 chinu
3 chinmay如何使用MATCH...AGAINST查询获取我的实际记录?
编辑-如果我正在搜索chinu而不是chi,我将得到1条记录。
发布于 2014-07-01 13:45:49
您需要在“chi”中添加一个星号,以指示查询应该与包含字符串的所有内容匹配,而不仅仅是字符串本身。例如,仅仅使用字符串'chi‘将只与'chi’完全匹配。
将查询更改为:
SELECT * FROM users WHERE MATCH (name) AGAINST ('chi*' IN BOOLEAN MODE)你应该得到你期望的结果。
发布于 2014-07-01 13:45:17
我想你忘了+标志了:
SELECT * FROM users WHERE MATCH (name) AGAINST ('+chi' IN BOOLEAN MODE)或者,如果它是一个确切的短语,使用双引号包围字符串:
SELECT * FROM users WHERE MATCH (name) AGAINST ('"chi"' IN BOOLEAN MODE)发布于 2014-07-01 13:47:17
我是第一个承认这不容易找到的人。MySQL全文搜索使用一个名为ft_min_word_length的系统变量。默认值为4,如这里所示。
因为您正在搜索一个三个字符的单词,所以它没有被索引.因此找不到它。
更多信息可在文档中获得,介绍如何对搜索进行微调。但基本思想是,您需要更改参数的值并重新构建索引。
但是,对于特定的查询,只需包含通配符,其他答案中将对此进行解释。
https://stackoverflow.com/questions/24511773
复制相似问题