Общие > Базы данных
FULLTEXT
AnnA:
всем приветик. ;)
подскажите: нельзя объявить индекс fulltext для столбчика longtext???
странно по-моему. разве нет?
т.е. он, конечно, открывает табличку. принимает данные, но нет поиска.
например, вносим данные в поля title [text] и content[longtext]:
--- Код: ---\'О компании\',\'Windows XP (кодовое название при разработке — Whistler; внутренняя версия — Windows NT 5.1) — это операционная система\'
--- Конец кода ---
теперь делаем запрос:
--- Код: ---SELECT * FROM t WHERE MATCH (title,content) AGAINST (\'компании\')
--- Конец кода ---
работает.
--- Код: ---SELECT * FROM t WHERE MATCH (title,content) AGAINST (\'версия\')
--- Конец кода ---
а вот этот запрос возвращает нулевой результат. :(
делаем иначе:
--- Код: ---SELECT * FROM t WHERE content LIKE \'%версия%\'
--- Конец кода ---
этот сработал!
AnnA:
вот странно. сделала content не longtext, как было раньше, а text.
и всё равно не работает запрос:
SELECT * FROM t WHERE MATCH (title,content) AGAINST (\'версия\').
fidget:
наверное "версия" содержится более чем в 50% строк
AnnA:
--- Цитировать ---AnnA:
вносим данные в поля title [text] и content[longtext]:
\'О компании\',\'Windows XP (кодовое название при разработке — Whistler; внутренняя версия — Windows NT 5.1) — это операционная система\'
--- Конец цитаты ---
только в одной!
одна запись в таблице.
поиск работает, если к запросу добавить IN BOOLEAN MODE
а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar и text
;)
в общем - сама спросила - сама ответила.
более-менее разобралась, но всё равно ещё не все вопросы закрыты.
fidget:
--- Цитировать ---
а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar и text
--- Конец цитаты ---
под этим понимается что индекс можно создавать только на строковых или текстовых полях, а не на полях типа BLOB. А не то что можно только на TEXT, но нельзя на MEDIUMTEXT, LONGTEXT и т.д.
Навигация
Перейти к полной версии