|
|
|
| Делаю полнотекстовый поиск по сайту. Вот запрос:
$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) Как вычислить сколько именно слов найдено в каждом выводе.
Если кто уже сталкивался, буду благодарен за помощь. | |
|
|
|
|
|
|
|
для: Владимир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) Легко вычислить можно толко количество найденных записей. | |
|
|
|
|
|
|
|
для: cheops
(22.12.2008 в 13:32)
| | Спасибо! Как оказалось, просто не работал режим "IN BOOLEAN MODE", в виду того, что всё тестировалось на Денвере со старой версией MySql, ещё не поддерживающей этот режим. Поставил новый Денвер с новой базой и с работающим "IN BOOLEAN MODE" - теперь всё понятно и вопросов больше нет. | |
|
|
|