2011-09-20 87 views
0

我搜索了很多,我以前有過類似的工作,但我無法弄清楚爲什麼這不會產生我期望的結果。假設我在名稱,製造商,模型或描述中有'test6',我希望搜索'tes',但使用下面的查詢它不會像我期望的那樣返回。MySQL布爾部分搜索

我也試圖「測試」與「反對(‘測試’+ IN BOOLEAN MODE等。任何幫助,將不勝感激感謝

ALTER TABLE productinfo ADD FULLTEXT(name, manufacturer, model, description); 

SELECT id, name,category_id, price, manufacturer, model, shortdescription, 
     description,stockqty,shippingbase,shippingcost, buyitnow,auctionitem, 
     MATCH (name, manufacturer, model, description) 
     AGAINST('tes'* IN BOOLEAN MODE) as score 
FROM productinfo 
    WHERE MATCH (name, manufacturer, model, description) 
     AGAINST('tes'* IN BOOLEAN MODE) ORDER BY score DESC 

解決,注意:經過一番研究,這是一個星號這需要的是搜索詞後,(在這種情況下,「TES」),這樣AGAINST(「TES」 * IN BOOLEAN MODE);

回答

0

有你正在運行到與此查詢兩個問題

  1. 全文搜索需要最少的工作量d長度爲4(see the manual
  2. 全文搜索僅查找整個單詞。爲了匹配一個字的部分,你需要把星號放在引號AGAINST('test*' IN BOOLEAN MODE)內,或者你可以使用正則表達式或locate()