2012-11-09 117 views
0

這是我的數據庫代碼。 0而不是1Mysql全文搜索不起作用

CREATE TABLE IF NOT EXISTS `house_details` (
    `houses_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 

    `everything_search` text NOT NULL 

    FULLTEXT KEY `everything_search` (`everything_search`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 


    INSERT INTO `house_details` (`everything_search`) VALUES 
    ('Good very good new-market Mymenshing Family sourov 4564'), 

顯示問題的結果,這裏是我的數據庫查詢命令

SELECT * FROM house_details WHERE MATCH (everything_search) AGAINST ('Mymenshing') > 0 ORDER BY `houses_id` DESC LIMIT 0,3 

* 和結果是* MySQL返回的查詢結果爲空(即零行) 。 (查詢花費0.0013秒)

+0

我從來沒有見過在這種情況下'> 0',刪除它? – wesside

+3

搜索結果爲空,因爲您搜索的單詞至少存在50%的行(即,一行)您需要更大的數據集。 – Crisp

+0

^+1,忘記了臭名昭着的MySQL 50%規則 – wesside

回答

0

我不認爲你在where子句中需要>0

 SELECT * FROM house_details 
     WHERE MATCH (everything_search) AGAINST ('Mymenshing') 
     ORDER BY `houses_id` DESC LIMIT 0,3 ; 
1

它爲我在布爾模式:

SELECT * FROM house_details WHERE MATCH (everything_search) 
AGAINST ('Mymenshing' In Boolean mode) > 0 ORDER BY `houses_id` DESC LIMIT 0,3 

看看這裏: http://www.sqlfiddle.com/#!2/d4471/6

做了一些研究後,我發現在Mysql中存在一個與match-agains的錯誤:http://bugs.mysql.com/bug.php?id=19583

這裏是如何修復'停用詞':http://www.nivas.hr/blog/2009/09/15/how-to-disable-mysql-fulltext-stopwords/http://www.sqlfiddle.com/#!2/d4471/6

+0

它的作品! MySQL 50%的規則!當更大的數據庫 –

+0

哈哈我很高興你解決了 – jcho360