Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Полнотекстовый поиск.
 
 автор: Глинтвейн   (18.10.2006 в 04:01)
 
 

Знаю, что тема много раз поднималась, но сколько не читаю, понять не могу. Покажите пожалуйста, пример дампа таблицы с полем, в котором используется полнотекст и запрос, который из нее информацию тянет. Дальше сам по мануалу разберусь. Спасибо.

   
 
 автор: cheops   (18.10.2006 в 11:30)   письмо автору
 
   для: Глинтвейн   (18.10.2006 в 04:01)
 

Таблица может выглядеть следующим образом
CREATE TABLE `tbl` (
  `id` int(11) NOT NULL auto_increment,
  `name` text NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `name` (`name`)
);

Запрос на поиск слова "программирование" в столбце name может выглядеть следующим образом
SELECT * FROM tbl WHERE MATCH (name) AGAINST ('программирование')

PS Следует помнить, что в обычном режиме полнотекстовый поиск ищет только те слова, которые встречаются реже, чем в половине записей таблицы (50%), т.е. если у вас две записи - у вас полнотекстовый поиск по определению ничего не найдёт, так как любое слово будет встречаться минимум в 50% записей таблицы.

   
 
 автор: Глинтвейн   (19.10.2006 в 15:42)
 
   для: cheops   (18.10.2006 в 11:30)
 

Спасибо большое. Разобрался. Только почему -то при первом поисковом запросе мускул обвалился:)
P.S. Сейчас времени побольше, читаю книжку и понимаю почему. Еще раз спасибо за "Самоучитель":)

   
 
 автор: Глинтвейн   (19.10.2006 в 16:28)
 
   для: cheops   (18.10.2006 в 11:30)
 

Ага, а вот не получается как раз по книжке (Листинг 18.6). Структура у меня такая:

CREATE TABLE `tbl` (
  `id` int(11) NOT NULL default '0',
  `cat` int(11) NOT NULL default '0',
  `name` text character set cp1251 NOT NULL,
  `all` text character set cp1251 NOT NULL,
  FULLTEXT KEY `name` (`name`),
  FULLTEXT KEY `all` (`all`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


При запросе
 SELECT id, cat, name FROM `tbl`
            WHERE MATCH (name, all) AGAINST ('программирование')" 

Выдает ошибку: Can't find FULLTEXT index matching the column list. Что я мог пропустить?

   
 
 автор: cheops   (19.10.2006 в 17:15)   письмо автору
 
   для: Глинтвейн   (19.10.2006 в 16:28)
 

Если ищите одновременно по двум столбцам name, all, в таблице tbl должен быть индекс FULLTEXT по двум столбцам
CREATE TABLE `tbl` ( 
  `id` int(11) NOT NULL default '0', 
  `cat` int(11) NOT NULL default '0', 
  `name` text character set cp1251 NOT NULL, 
  `all` text character set cp1251 NOT NULL, 
  FULLTEXT KEY `name` (`name`, `all`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования