Forum Webscript.Ru
Общие => Базы данных => Тема начата: AnnA от 05 Июня 2006, 19:42:36
-
всем приветик. ;)
подскажите: нельзя объявить индекс 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 \'%версия%\'
этот сработал!
-
вот странно. сделала content не longtext, как было раньше, а text.
и всё равно не работает запрос:
SELECT * FROM t WHERE MATCH (title,content) AGAINST (\'версия\').
-
наверное "версия" содержится более чем в 50% строк
-
AnnA:
вносим данные в поля title [text] и content[longtext]:
\'О компании\',\'Windows XP (кодовое название при разработке — Whistler; внутренняя версия — Windows NT 5.1) — это операционная система\'
только в одной!
одна запись в таблице.
поиск работает, если к запросу добавить IN BOOLEAN MODE
а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar и text
;)
в общем - сама спросила - сама ответила.
более-менее разобралась, но всё равно ещё не все вопросы закрыты.
-
а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar и text
под этим понимается что индекс можно создавать только на строковых или текстовых полях, а не на полях типа BLOB. А не то что можно только на TEXT, но нельзя на MEDIUMTEXT, LONGTEXT и т.д.
-
не буду спорить. Возможно вы правы, но моя практика показывает совершенно обратное (почти :)) - если поле longtext - поиск в нём не работает. Если text - работает лишь при включенном IN BOOLEAN MODE,
а вот, если varchar - то работае всё, как и должно. пробовала на версии MySQL 4.1.12
Не знаю, может в чём-то ошиблась при указании кодировок, при создании таблиц... Но в общем-то старалась всё делать "как написано".
-
> Возможно вы правы, но моя практика показывает совершенно обратное (почти ) - если поле longtext - поиск в нём не работает. Если text - работает лишь при включенном IN BOOLEAN MODE
AnnA, то что у вас не работает поиск для поля LONGTEXT говорит о ваших кривых руках. То что у вас находится слово при BOOLEAN MODE и не находится при обычном поиске, скорее говорит о том что либо слово содержится более чем в 50% строк таблицы, либо еще о каких-то ваших заморочках, либо о баге в MySQL.
А версию я бы вам советовала обновить в любом случае.