2011-09-01 99 views
0

我有一個表叫myatts存在:MySQL全文索引返回結果爲零,即使確切的搜索詞表中的

  • 它有大約3332834行數據。
  • 我一般搜索欄「內容」
  • 我有大約40行,其中內容=大鼠,D.D。

但是,當我全文搜索它,我沒有得到任何結果。但是如果我使用LIKE,我會得到結果。
我想堅持全文,誰能幫我找出爲什麼沒有結果返回?

這裏是我的表結構:

id 
int(11) Not null AUTO_INCREMENT 

join_id  
int(11) Not Null 

webid 
int(11) Not Null 

content 
text utf8_general_ci 

這裏是我的指標

Keyname Type  Unique Packed  Field  Cardinality 
PRIMARY BTREE  Yes No  id    3332834  
content BTREE  No  No  content (333) 238059   
id_index BTREE  No  No  webid  151492   
join_id BTREE  No  No  join_id  36   
content_ft FULLTEXT No  No  content  119029 

這裏是我的查詢:

SELECT * FROM myatts WHERE MATCH(content) AGAINST('Rat, D.D.' IN BOOLEAN MODE) 

這裏是解釋:

1 SIMPLE myatts fulltext content_ft content_ft 0  1 Using where 

任何幫助/指針都會很棒。謝謝!

回答

0

你最少字長可能設置爲4.檢查MySQL Manual的細節..

+0

啊是的,我想過這個,但我認爲我的大腦把整個短語看成是超過3個字符長。我敢打賭就是這樣。 – Steven

+0

我需要一些時間來更改設置,看看是否有問題。我覺得我也可以製作一個php腳本來檢查搜索短語中最大的單詞,如果它小於4,請使用「like」代替? – Steven

+0

它的種類取決於您的搜索是更自然的語言類型搜索還是獨特且具體(可預測)的格式,如模型/零件編號。您還可以微調哪些字符是停用詞以及如何處理連字符。閱讀FULLTEXT搜索手冊的整個部分將獲得很好的回報。就我個人而言,除非我對零件號碼或專有名詞(名稱,地點)進行完全匹配,否則我會盡量避免使用LIKE類型的搜索。 –

0

默認情況下,MySQL的全文索引將忽略的長度小於4個字符的話。在您的my.cnf中設置此變量:

ft_min_word_len=3 

我你可能不想去小於3,因爲你會誤報結束。

相關問題