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

Форум MySQL

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

 

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

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

тема: Поиск с помощью PHP в базе MySQL
 
 автор: zloi_burgui   (02.07.2007 в 09:13)   письмо автору
 
 

Здраствуйте
Хотел спросить как можна сделать поиск средствами PHP в базе MySQL. Есть небольшая база, в которой сохраняются краткие описания публикаций на трех языках, отдельно анотации, заголовки, и ФИО автора. Хотелось сделать такой поиск, чтоб искал в всех полях и при нахождение соответствия выводил информацию в отдельном окне. Примерно как на этом форуме, только без логики или и и.

Спасибо за ответы

   
 
 автор: bronenos   (02.07.2007 в 09:42)   письмо автору
 
   для: zloi_burgui   (02.07.2007 в 09:13)
 

вам дать теорию или вы напишете названия таблицы и столбцов и вам написать пример

   
 
 автор: zloi_burgui   (02.07.2007 в 16:21)   письмо автору
 
   для: bronenos   (02.07.2007 в 09:42)
 

Да, спасибо. Было б хорошо немного теории, и работающий пример. Название базы и таблиц ставьте свои я потом поменяю. Правда я хотел сделать поиск по нескольким полям.

   
 
 автор: CrazyAngel   (02.07.2007 в 11:06)   письмо автору
 
   для: zloi_burgui   (02.07.2007 в 09:13)
 

полнотекстовой поиск

   
 
 автор: Петр   (02.07.2007 в 11:27)   письмо автору
 
   для: zloi_burgui   (02.07.2007 в 09:13)
 

Можно искать так:
SELECT * FROM table WHERE field LIKE "%имя%"
Можно, реализовать полнотекстовый поиск:
SELECT *, MATCH(поле1) AGAINST('$search')+MATCH(поле2) AGAINST('$search') AS relev FROM news WHERE MATCH(поле2) AGAINST('$search') AND active='Y' ORDER BY relev DESС
(в этом случае будет выводится записи содержащии искомое слово, в разных полях, и сортироваться по релевантности).
Для этого нужно создать дополнительные индексы, для полей по которым ищим (в phpMyAdmin их легко создать)

   
 
 автор: zloi_burgui   (02.07.2007 в 20:42)   письмо автору
 
   для: Петр   (02.07.2007 в 11:27)
 

Пробывал делать как Вы написали ничего не вышло. Смущает этой кусок кода AS relev FROM news WHERE MATCH(поле2) так нужно или это ошибка?

   
 
 автор: Петр   (03.07.2007 в 08:21)   письмо автору
 
   для: zloi_burgui   (02.07.2007 в 20:42)
 

Все верно.
AS relev - это псевдоним выбераемого поля, для того, чтобы при сортировке не писать длинное название, а просто поставить relev (от слова релевантность, можно любое другое)
MATCH(поле2) - это числовое значение релевантности поиска слова в поле2

   
Rambler's Top100
вверх

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