我确实得到了它,但我在MySQL中的MATCH (columnName) AGAINST ('word')
只发现那些包含word
,而不是words
或keyword
。
我尝试在我的系统上运行此查询:
select count(*) from content where lcase(content_text) like '%try%'
and not match (content_text) against ('try') order by content_id
我收到了结果
| count(*) |
____________
| 379 |
我认为应该是0.我的查询或数据库可能出现什么问题?
PS:表content
是MyISAM,我已将列content_text
设置为完整索引。
答案 0 :(得分:2)
'try'是一个MySQL停用词。对于全文搜索,该词被忽略。
参考:http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html
另外,是的,MATCH
只搜索整个单词,你是对的。这是一种自然语言搜索。如果您希望搜索部分单词(单词中的字符),请使用LIKE %xxx%
isntead。
答案 1 :(得分:2)
全文搜索会停止一些常用字词,但使用此步骤会禁用它。
1:在mysql中打开my.ini文件
2:在my.ini中的[mysqld]行后面的两行以下(在文件中搜索[mysqld])
ft_min_word_len=1
ft_stopword_file=""
3:重启服务器
4:使用以下命令修复你的表
修复表tablename;
5:现在你的搜索工作正在......