MySQLのFULLTEXTインデックスを使用してPHP Webアプリケーションの検索サポートを追加しようとしています。MySQL FULLTEXTが動作しない
私はテストテーブルを作成し(MyISAMタイプを使用し、1つのテキストフィールドa
)、サンプルデータを入力しました。今私が正しい場合、次のクエリは両方の行を返す必要があります:
SELECT * FROM test WHERE MATCH(a) AGAINST('databases')
ただし、それは何も返しません。私は少しの研究を行いました。私が知る限り、テーブルはMyISAMテーブルであり、FULLTEXTインデックスが設定されています。私はプロンプトからphpMyAdminからクエリを実行しようとしましたが、運がありません。私は何かが欠けている?
UPDATE:コーディのソリューションは、私のテストケースで働いていた間、[OK]を、私の実際のテーブルの上に動作していないよう:
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が返されます。代わりに空の結果セットがもう1つ得られます。ブール検索のための私のオプションは以下の通りです:
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を実行します。 –