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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Использование WHERE MATCH

Сообщения:  [1-7] 

 
 автор: cheops   (10.11.2006 в 19:38)   письмо автору
 
   для: Worldmen   (10.11.2006 в 19:11)
 

MySQL следует сообщить, что вы собиратесь работать в логическом режиме
SELECT * , MATCH (name,infa) AGAINST ('телевиз%' IN BOOLEAN MODE) from  tovar1;

   
 
 автор: Worldmen   (10.11.2006 в 19:18)   письмо автору
 
   для: Yakor   (10.11.2006 в 19:05)
 

Спасибо, уже разобрался.

   
 
 автор: Worldmen   (10.11.2006 в 19:11)   письмо автору
 
   для: cheops   (10.11.2006 в 18:55)
 

при использовании %, например - 'телевиз%' - выдает только одну строку.
а при таком варианте - 'телевизо%' - ничего.

   
 
 автор: Yakor   (10.11.2006 в 19:05)   письмо автору
 
   для: Worldmen   (10.11.2006 в 18:29)
 

Функция MATCH ... AGAINST() используется для полнотекстового поиска и возвращает величину релевантности, а функция LIKE производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL. так что мне MATCH ... AGAINST() больше нравится, тем более что помойму с версии 4.1 можно искать как LIKE'ом ... то есть неполные слова по шаблону...


Кстати! если у Вас в таблице слово "телевизор" присутствует более чем в половине строк - поиск не принесет результатов, что впринципе правильно... представьте выборку полнотекстным поиском из базы огромного объема где к тому же искомое слово есть более чем в каждой второй строчке


Кстати надо помнить что MATCH ... AGAINST() зависит от таких настроек fulltext поиска как: ft_min_word_len & ft_max_word_len. Так что тут:
>"Выводит эти две строки. А если задать параметр "тел" - то ничего не выводит."
нечево возмущаться....
Искомые слова должны содержать четыре или более символов,
 т.е. слова "sms", "WAP", "код" обнаружить не удастся, 
это связано с конструктивными особенностями
 используемой в форуме базы данных
- знакомый текст? :)))

   
 
 автор: cheops   (10.11.2006 в 18:55)   письмо автору
 
   для: Worldmen   (10.11.2006 в 18:29)
 

Следует использовать логический режим полнотекстового поиска, чтобы можно было искать не полные слова, там также как и в LIKE можно использовать % для обозначения любого количества символов после слова..

   
 
 автор: cheops   (10.11.2006 в 18:54)   письмо автору
 
   для: Worldmen   (10.11.2006 в 18:29)
 

.

   
 
 автор: Worldmen   (10.11.2006 в 18:29)   письмо автору
 
 

Есть таблица:

CREATE TABLE `tovar1` (
  `id` int(3) unsigned NOT NULL auto_increment,
  `name` varchar(25) NOT NULL default '',
  `img` varchar(70) default '',
  `Infa` text,
  `tiptov` varchar(50) default 'нет',
  PRIMARY KEY  (`id`),
  KEY `tiptov` (`tiptov`),
  FULLTEXT (`name`,`Infa`)
) TYPE=MyISAM;

-----------------------------------------
id | name | infa |
-----------------------------------------
3 | телевизор 21" | (MEMO)|
4 | Телевизор 40" | (MEMO)|
...
делаю селект (в поле name )
SELECT * from  tovar1 WHERE MATCH (name,infa) AGAINST ('телевизор'); 

Выводит эти две строки. А если задать параметр "тел" - то ничего не выводит. Если делать такую выборку :
SELECT * , MATCH (name,infa) AGAINST ('телевизор') from  tovar1; 

Выводит
-------------------------------------------------------------------------
id | name | infa | MATCH (name,infa) ... |
-------------------------------------------------------------------------
... 0
3 | телевизор 21" | (MEMO)| 0.670031....
4 | Телевизор 40" | (MEMO)| 0.85......
...

А если задать параметр "телевиз" - ничего не выводит.
Я не понимаю, какой смысл использовать функцию MATCH когда можно с успехом пользоваться LIKE?

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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