2014-02-04 4 views
17

Я бегу следующий запрос на tbl_queryКак создать индекс FULLTEXT для нескольких столбцов?

select * from tbl_query q where match(q.query_desc,q.query_desc_details) against ('test1' WITH QUERY EXPANSION); 

Это дает ошибку

16:46:22 select * from tbl_query q where match(q.query_desc,q.query_desc_details) against ('test1' WITH QUERY EXPANSION) LIMIT 0, 1000 Error Code: 1191. Can't find FULLTEXT index matching the column list 0.078 sec 

Моя таблица как этот

CREATE TABLE `tbl_query` (
    `query_id` int(11) NOT NULL AUTO_INCREMENT, 
    `query_desc` text NOT NULL, 
    `query_desc_details` text, 
    PRIMARY KEY (`query_id`), 
    KEY `QUERY_DESC` (`query_desc`(333)) USING BTREE, 
    KEY `QUERY_DESC_DETAILS` (`query_desc_details`(333)) USING BTREE 
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 

В базе данных полнотекстовых слов границы подобны

ft_max_word_len= 84 
ft_min_word_len= 4 

Я ищу против двух столбцов.
Итак, мой вопрос в том, как создать полный текстовый индекс для таблицы?

ответ

29

Полный текст с 2 столбцы создать как этот

ALTER TABLE tbl_query 
ADD FULLTEXT INDEX `FullText` 
(`query_desc` ASC, 
`query_desc_details` ASC); 
+1

Спасибо Это сработало .. !! –

7

Это создает индекс. Это то, что вы хотите?

ALTER TABLE table ADD FULLTEXT index_name(column1); 
+0

Я добавил индекс, но он показывает ту же ошибку. Что-то еще нужно сделать? –

+1

Нет, он должен работать. Проверьте один раз, используя desc, если он есть. Попробуйте перезапустить mysql один раз. Но это должно сработать. –

+0

'ALTER TABLE tbl_query ADD FULLTEXT index_name (query_desc, query_desc_details);' для 2 столбцов. –

16
ALTER TABLE `TableName` 
    ADD FULLTEXT INDEX `IndexName` (`ColumnName`); 
+7

Не повторяйте ответ. –

+0

@nathangiesbrecht нет, он был первым. Но оба ответа по-прежнему ошибочны. –

Смежные вопросы