2012-11-07 180 views
0

我遇到麻煩,理解MySql中的MATCH。我在「關鍵字」字段中有一個帶有全文索引的表格。關鍵字以逗號分隔。與關鍵字匹配的MySQL查詢

我3行測試,與關鍵詞:準備,大鼠,小鼠

當我搜索不是「準備」或「鼠」,我得到了我想要的結果。但是,如果我搜索「鼠標」,我沒有結果。這是我使用的查詢:

SELECT *, MATCH(Keywords) AGAINST('mouse') AS Score 
FROM fs_Files 
WHERE MATCH(Keywords) AGAINST('mouse') 
ORDER BY score DESC; 

我也試過用「鼠標」後IN BOOLEAN MODE,但它是同樣的結果。

編輯 在我使用單詞「鼠標」的數據庫項中,我實際上使用了「mus」這個詞(它是挪威語中的鼠標)。我發現如果我將它改爲'musebart'(只是讓這個詞變長),搜索就會發現它。只有3個字符,它可能太短了嗎? MySql是否忽略它(停用詞?),因爲它只包含3個字符?

再次編輯: 賓果,它必須至少有4個字符才能被搜索。否則,您必須更改它(如果您有權這樣做)鏈接:http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

回答

0

match的工作方式與like的工作方式有一些不同之處。

我的意思是:

SELECT *, MATCH(Keywords) AGAINST('mouse') AS Score 
FROM fs_Files 
WHERE MATCH(Keywords) AGAINST('mouse') 
ORDER BY score DESC; 

可能太

SELECT *, MATCH(Keywords) AGAINST('mouse') AS Score 
FROM fs_Files 
WHERE Keywords like '%mouse%' 
ORDER BY score DESC; 

看看MySQL的比賽:http://dev.mysql.com/doc/refman/5.0/es/fulltext-search.html

看看它們之間的差別(匹配和等): Mysql match...against vs. simple like "%term%"

+0

感謝您的澄清。但是,如果我搜索「鼠標,鼠標」,並將其存儲爲「鼠標,鼠標」的關鍵字呢?也許我在這裏是一個瘋狂的軌道..也許我應該把關鍵字放在它自己的表中,並保留對另一個表中「文章」的ID的引用。嗯 –

+0

找到了我的問題的答案,看看「再次編輯」部分。儘管我會給你答案。由於我的問題有點不清楚(你不可能瞭解我的實際問題)。雖然謝謝! –