Forum Webscript.Ru

Общие => Базы данных => Тема начата: AnnA от 05 Июня 2006, 19:42:36

Название: FULLTEXT
Отправлено: 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 \'%версия%\'
этот сработал!
Название: FULLTEXT
Отправлено: AnnA от 05 Июня 2006, 20:12:21
вот странно. сделала content не longtext, как было раньше, а text.
и всё равно не работает запрос:
SELECT * FROM t WHERE MATCH (title,content) AGAINST (\'версия\').
Название: FULLTEXT
Отправлено: fidget от 06 Июня 2006, 22:37:29
наверное "версия" содержится более чем в 50% строк
Название: FULLTEXT
Отправлено: AnnA от 08 Июня 2006, 14:09:42
Цитировать
AnnA:
вносим данные в поля title [text] и content[longtext]:

\'О компании\',\'Windows XP (кодовое название при разработке — Whistler; внутренняя версия — Windows NT 5.1) — это операционная система\'

 только в одной!
одна запись в таблице.

поиск работает, если к запросу добавить  IN BOOLEAN MODE

а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar   и text

;)

в общем - сама спросила - сама ответила.
более-менее разобралась, но всё равно ещё не все вопросы закрыты.
Название: FULLTEXT
Отправлено: fidget от 10 Июня 2006, 01:10:05
Цитировать

а что касается longtext, то в документации написано, что
индекс FULLTEXT можно объявить только для полей типа varchar и text


под этим понимается что индекс можно создавать только на строковых или текстовых полях, а не на полях типа BLOB. А не то что можно только на TEXT, но нельзя на MEDIUMTEXT, LONGTEXT и т.д.
Название: FULLTEXT
Отправлено: AnnA от 12 Июня 2006, 14:35:00
не буду спорить. Возможно вы правы, но моя практика показывает совершенно обратное (почти :)) - если поле longtext - поиск в нём не работает. Если text - работает лишь при включенном IN BOOLEAN MODE,
а вот, если varchar - то работае всё, как и должно. пробовала на версии MySQL 4.1.12
Не знаю, может в чём-то ошиблась при указании кодировок, при создании таблиц... Но в общем-то старалась всё делать "как написано".
Название: FULLTEXT
Отправлено: fidget от 13 Июня 2006, 22:53:02
> Возможно вы правы, но моя практика показывает совершенно обратное (почти ) - если поле longtext - поиск в нём не работает. Если text - работает лишь при включенном IN BOOLEAN MODE

AnnA, то что у вас не работает поиск для поля LONGTEXT говорит о ваших кривых руках. То что у вас находится слово при BOOLEAN MODE и не находится при обычном поиске, скорее говорит о том что либо слово содержится более чем в 50% строк таблицы, либо еще о каких-то ваших заморочках, либо о баге в MySQL.

А версию я бы вам советовала обновить в любом случае.