Я немного потерян, это похоже на некоторую глупую ошибку - но у меня нет подсказки, каково это может быть. Вот сеанс тестирования:
mysql> drop table articles;
Query OK, 0 rows affected (0.02 sec)
mysql> CREATE TABLE articles (body TEXT, title VARCHAR(250), id INT NOT NULL auto_increment, PRIMARY KEY(id)) ENGINE = MYISAM;
Query OK, 0 rows affected (0.02 sec)
mysql> ALTER TABLE articles ADD FULLTEXT(body, title);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into articles(body) values ('Maya');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM articles WHERE MATCH(title, body) AGAINST('Maya');
Empty set (0.00 sec)
mysql> select * from articles
-> ;
+------+-------+----+
| body | title | id |
+------+-------+----+
| Maya | NULL | 1 |
+------+-------+----+
1 row in set (0.00 sec)
Это идет "mysqld Ver, 5.1.37-1ubuntu5 для debian-linux-gnu на i486 ((Ubuntu))".
Вот сценарий для вырезанного и вставленного простого (попробуйте его и проверьте, работает ли он над Вашей системой):
CREATE TABLE articles (body TEXT, title VARCHAR(250), id INT NOT NULL auto_increment, PRIMARY KEY(id)) ENGINE = MYISAM;
ALTER TABLE articles ADD FULLTEXT(body, title);
insert into articles(body) values ('Maya');
SELECT * FROM articles WHERE MATCH(title, body) AGAINST('Maya');
В MySQL существует три типа полнотекстового поиска. :
Из ручной ввод MySQL :
Поиск на естественном языке интерпретирует строка поиска как фраза в естественный человеческий язык (фраза на свободный текст). Нет особых операторы. Применяется список запрещенных слов. Кроме того, присутствуют слов в 50% или более строках считается обычным и не совпадают. Полнотекстовый поиск естественен язык ищет, если В ЕСТЕСТВЕННОМ Указан модификатор LANGUAGE MODE или если модификатор не указан.
Например, попробуйте добавить еще две записи:
INSERT INTO articles(body) VALUES ('Some text'), ('Another text');
И снова запустите тот же SELECT - все будет работать.
В качестве обходного пути вы можете использовать логический режим, в котором нет этого правила «50%»:
SELECT * FROM articles WHERE MATCH(title, body) AGAINST('Maya' IN BOOLEAN MODE);
Слова в 50% или более строк не совпадают. См. Mysql doc: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html