2010-06-24 62 views
0

此查询为t1.ads_category现有的数据只能在运行,不为别的两列:mysql的全文检索

SELECT t1.id, 
     t1.ads_type, 
     t1.ads_category, 
     t1.ads_subcat, 
     t1.ads_title, 
     t1.ads_title, 
     t1.ads_description, 
     t1.ads_city, 
     t1.ads_location, 
     t2.ads_image, 
     t2.ads_activate, 
     t2.postads_id 
    FROM postads t1 
    JOIN nextpostads t2 ON t1.id = t2.postads_id 
WHERE MATCH(t1.ads_category, 
      t1.ads_title, 
      t1.ads_description) AGAINST ('".$search_text."') 
    AND t1.ads_city='".strtolower($city_name_url[0])."' 
    AND t1.ads_location='".$location_val."' 
    AND t2.ads_activate='Yes' 

有什么不对呢? FULLTEXT SEARCH是否有问题?我在FULLTEXT INDEX中看到基数为23。我是FULLTEXT的新手。

+0

IIRC,全文索引只能在MyISAM表。表'POSTADS'的引擎类型是什么? – 2010-06-24 20:37:15

回答

1

转播我的回答给转贴;-)

你需要在合并域ads_category,ads_title和ads_description建立全文索引,而不是在每一列。

例如为:

ALTER TABLE `postads` ADD FULLTEXT (
`ads_category` , 
`ads_title`, 
`ads_description` 
);