2013-04-22 96 views
1

我在我的數據庫中有一個varchar列,我想使用mysql MATCH/AGAINST查詢搜索單詞。但是,如果有多個單詞,它似乎不起作用。mysql匹配/反對語法

INSERT INTO mytable (title) VALUES ('my id 123'); 

SELECT * FROM mytable WHERE MATCH (title) AGAINST ('+my +id +123' IN BOOLEAN MODE); 

返回無結果。我在查詢語法中遺漏了什麼?請注意,title字段沒有全文索引。

回答

0

myid & 123可能是低然後ft_min_word_length。我猶豫了數字是否會被視爲單詞,快速測試顯示它們是,但最小(字符串)長度仍然適用。

+0

@ wrikken--沒有全文索引,ft_min_word_length也適用嗎? – user101289 2013-04-22 17:39:15

+0

@ user101289:是的,根據[手冊](http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html):_「最小和最大字長全文參數適用。「_ – Wrikken 2013-04-22 17:42:29

1

您需要設置如下:

步驟01:創建一個停止字

echo "a" > /var/lib/mysql/stopwords.txt 
echo "an" >> /var/lib/mysql/stopwords.txt 
echo "the" >> /var/lib/mysql/stopwords.txt 
chown mysql:mysql /var/lib/mysql/stopwords.txt 

這將阻止索引最註釋字的文章

步驟02:這個添加到/ etc /my.cnf

[mysqld] 
ft_min_word_length=1 
ft_stopword_file=/var/lib/mysql/stopwords.txt 

STEP 03:重新啓動mysql

service mysql restart 

步驟04:創建全文索引

ALTER TABLE mytable ADD FULLTEXT ft_title (title); 

之後,您的查詢應該工作,或至少取得實實在在的成果。

試試吧!