2012-07-24 62 views
1

我真的不明白,但我在MySQL中的MATCH (columnName) AGAINST ('word')只發現那些只包含word,但不包含wordskeywordMySQL - MATCH表現爲僅搜索整個單詞

我想我的系統上運行此查詢:

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

回答

2

'try'是一個MySQL停用詞。對於全文搜索,該詞被忽略。

參考:http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html

而且,是的,你說得對,MATCH只搜索整個單詞。這是一種自然語言搜索。如果您更喜歡搜索部分單詞(單詞內的字符),請使用LIKE %xxx%

+0

我試着用其他詞,它仍然有COUNT(*)> 0 – zfm 2012-07-24 05:49:35

+0

另外,燁你說得對,'只有MATCH'搜索整個詞。如果你想搜索單詞中的字符,使用'LIKE%XXX%'。 – uzyn 2012-07-24 05:51:12

+0

這很糟糕,使用'LIKE%XXX%'慢得多::( – zfm 2012-07-24 05:56:39

2

全文搜索停止一些常用詞,但它是禁用使用此步驟。

1:下面的地方兩個線路後的[mysqld]中的my.ini線(搜索的[mysqld]在文件)

ft_min_word_len=1 
ft_stopword_file="" 

3:重新啓動在MySQL

2打開my.ini文件你的服務器

4:使用以下命令

修表的表名修理你的表;

5:現在你的搜索工作....