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

Форум MySQL

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

 

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

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

тема: Полнотестовый поиск - вопросы для знатоков
 
 автор: Владимир22   (21.12.2008 в 17:42)   письмо автору
 
 

Делаю полнотекстовый поиск по сайту. Вот запрос:
$search="Гагарин";
$rew=mysql_query("select  from kon where title LIKE '%$search%' || 
MATCH (text) AGAINST ('$search') order by `date` desc");

Но почему-то не выводит части слов в тексте. Например, есть в тексте слово "Гагариным" - так вот "Гагариным" находит, а вот "Гагарин" уже не находит. Вопросы:
1) Как сделать, чтобы с помощью MATCH находило части слов в тексте (подобно LIKE '%$search%' )???
2) Как можно отсортировать по релевантности, т.е. где больше слов найдено, то и выше в списке + приоритет вывода для title(заглавий).
3) Как вычислить сколько именно слов найдено в каждом выводе.
Если кто уже сталкивался, буду благодарен за помощь.

  Ответить  
 
 автор: cheops   (22.12.2008 в 13:32)   письмо автору
 
   для: Владимир22   (21.12.2008 в 17:42)
 

>Но почему-то не выводит части слов в тексте. Например, есть в тексте слово "Гагариным" - так
>вот "Гагариным" находит, а вот "Гагарин" уже не находит.
1) В логическом режиме следует искать, используя модификатор *
$search="Гагарин"; 
$rew=mysql_query("select  from kon where title LIKE '%$search%' ||  
MATCH (text) AGAINST ('$search*' IN BOOKEAN MODE) order by `date` desc");

2) Для сортировки по релевантности следует убрать ORDER BY и любые другие WHERE-условия. Только релевантность в полнотекстовом поиске это не обязательно большое количество слов.
3) Легко вычислить можно толко количество найденных записей.

  Ответить  
 
 автор: Владимир22   (22.12.2008 в 16:38)   письмо автору
 
   для: cheops   (22.12.2008 в 13:32)
 

Спасибо! Как оказалось, просто не работал режим "IN BOOLEAN MODE", в виду того, что всё тестировалось на Денвере со старой версией MySql, ещё не поддерживающей этот режим. Поставил новый Денвер с новой базой и с работающим "IN BOOLEAN MODE" - теперь всё понятно и вопросов больше нет.

  Ответить  
Rambler's Top100
вверх

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