|
|
|
| Здраствуйте
Хотел спросить как можна сделать поиск средствами PHP в базе MySQL. Есть небольшая база, в которой сохраняются краткие описания публикаций на трех языках, отдельно анотации, заголовки, и ФИО автора. Хотелось сделать такой поиск, чтоб искал в всех полях и при нахождение соответствия выводил информацию в отдельном окне. Примерно как на этом форуме, только без логики или и и.
Спасибо за ответы | |
|
|
|
|
|
|
|
для: zloi_burgui
(02.07.2007 в 09:13)
| | вам дать теорию или вы напишете названия таблицы и столбцов и вам написать пример | |
|
|
|
|
|
|
|
для: bronenos
(02.07.2007 в 09:42)
| | Да, спасибо. Было б хорошо немного теории, и работающий пример. Название базы и таблиц ставьте свои я потом поменяю. Правда я хотел сделать поиск по нескольким полям. | |
|
|
|
|
|
|
|
|
для: 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 их легко создать) | |
|
|
|
|
|
|
|
для: Петр
(02.07.2007 в 11:27)
| | Пробывал делать как Вы написали ничего не вышло. Смущает этой кусок кода AS relev FROM news WHERE MATCH(поле2) так нужно или это ошибка? | |
|
|
|
|
|
|
|
для: zloi_burgui
(02.07.2007 в 20:42)
| | Все верно.
AS relev - это псевдоним выбераемого поля, для того, чтобы при сортировке не писать длинное название, а просто поставить relev (от слова релевантность, можно любое другое)
MATCH(поле2) - это числовое значение релевантности поиска слова в поле2 | |
|
|
|