我正在嘗試使用MySQL的FULLTEXT索引爲我的PHP web應用程序添加搜索支持。MySQL FULLTEXT不能正常工作
我創建了一個測試表(使用MyISAM類型,帶有單個文本字段a
)並輸入了一些示例數據。現在,如果我是正確的,下面的查詢應該返回這兩個行:
SELECT * FROM test WHERE MATCH(a) AGAINST('databases')
但它返回無。我已經做了一些研究,並且盡我所知地做了一切正確的事情 - 表是MyISAM表,FULLTEXT索引已設置。我試着從提示符和phpMyAdmin中運行查詢,但沒有運氣。我錯過了關鍵的東西嗎?
UPDATE:好,而科迪的解決方案在我的測試情況下的工作似乎並沒有對我的實際工作表中:
CREATE TABLE IF NOT EXISTS `uploads` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`size` int(11) NOT NULL,
`type` text NOT NULL,
`alias` text NOT NULL,
`md5sum` text NOT NULL,
`uploaded` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
而且數據我使用:
INSERT INTO `uploads` (`id`, `name`, `size`, `type`, `alias`, `md5sum`, `uploaded`) VALUES
(1, '04 Sickman.mp3', 5261182, 'audio/mp3', '1', 'df2eb6a360fbfa8e0c9893aadc2289de', '2009-07-14 16:08:02'),
(2, '07 Dirt.mp3', 5056435, 'audio/mp3', '2', 'edcb873a75c94b5d0368681e4bd9ca41', '2009-07-14 16:08:08'),
(3, 'header_bg2.png', 16765, 'image/png', '3', '5bc5cb5c45c7fa329dc881a8476a2af6', '2009-07-14 16:08:30'),
(4, 'page_top_right2.png', 5299, 'image/png', '4', '53ea39f826b7c7aeba11060c0d8f4e81', '2009-07-14 16:08:37'),
(5, 'todo.txt', 392, 'text/plain', '5', '7ee46db77d1b98b145c9a95444d8dc67', '2009-07-14 16:08:46');
我現在正在運行的查詢是:
SELECT * FROM `uploads` WHERE MATCH(name) AGAINST ('header' IN BOOLEAN MODE)
應該返回第3行,header_bg2.png。相反,我得到另一個空的結果集。我的布爾搜索選項如下:
mysql> show variables like 'ft_%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
+--------------------------+----------------+
5 rows in set (0.02 sec)
「頭」字長度的限制之內,我懷疑這是一個停用詞(我不知道如何獲取列表)。有任何想法嗎?
你可以在這裏看到停用詞列表https://dev.mysql.com/doc/refman/5。5/en/fulltext-stopwords.html,用於innodb http://dev.mysql.com/doc/refman/5.7/en/innodb-ft-default-stopword-table.html或運行SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD; – 2017-01-18 10:53:53