Реалізація пошуку на сайті через php

Відео: Видеоурок по реалізації пошуку на сайті Частина 2

Реалізація пошуку на сайті через PHP

Відео: Пошук на сайті

У мене вже кілька разів просили написати статтю про те, як реалізувати пошук на сайті через PHP. Завдання це непросте, я б навіть сказав - дуже непроста, оскільки тут є величезна кількість нюансів і перешкод. У цій статті я розберу алгоритм пошуку на сайті.

Давайте припустимо, що на нашому сайті є безліч різних матеріалів (статей, новин, заміток та іншого). Все це добро знаходиться в базі даних. І наше завдання - реалізувати пошук на сайті. Найпростіший алгоритм наступний:

Відео: 12.Реалізація пошуку по сайту

  1. створити HTML-форму з рядком пошуку, а також кнопкою "Submit". У текстове поле користувачі будуть вводити пошуковий запит, а далі натискати на кнопку.
  2. Отримати пошуковий запит (як правило, передається методом GET, але іноді застосовують і POST), А також, з метою захисту від XSS, пропустити його через функцію htmlspecialchars ().
  3. Зробити вибірку з відповідних таблиці (зі статтями, новинами, нотатками і іншим) тих записів, в яких міститься пошуковий запит. Показую приблизний SQL-запит для таких випадків: SELECT * FROM articles WHERE `text_article` LIKE %search%Відповідно, замість search підставляється рядок пошуку.
  4. Отримавши записи, в потрібному вигляді виводимо їх, бажано, за релевантністю. Я, наприклад, зробив у себе на сайті так: де найбільше збігів - та стаття і релевантні, отже, ставлю її першої. Швидше за все, Вам цей спосіб оцінки релевантності теж підійде.



Багато з Вас скажуть, що нічого складного тут немає. І будуть частково праві, проте, давайте розберемо такий приклад рядка пошуку: "шукаю цей текст". Постає питання:"А що, власне, шукається?". Чи то шукається точне входження тексту"шукаю цей текст". Або, можливо, шукається текст, де присутні всі три слова, але які можуть слідувати далеко не один за одним. Або, можливо, шукається текст, де присутня хоча б одне з цих слів.

Відео: Урок 13 Пошук по сайту




І ось тут завдання значно ускладнюється. Можна зробити складну систему синтаксису (як в пошукових системах), наприклад, шукається точне входження, якщо запит заданий в лапках. А можна давати вибір користувачам, як саме вони хочуть проводити пошук (за допомогою radio-кнопок). Таким чином, зроблено у мене на сайті. Тому в попередній алгоритм додається ще один пункт: складання SQL-запит. Ось приклад SQL-запиту, коли потрібно витягнути всі матеріали, в яких є хоча б одне слово із запиту "шукаю цей текст":

SELECT * FROM articles WHERE (`text_article` LIKE "% Шукаю%" OR `text_article` LIKE "% Цей%" OR `text_article` LIKE "% Текст%")

Відповідно, в скрипті пошуку Ви повинні генерувати подібні SQL-запити, посилати до бази даних, отримувати відповідь і виводити його. Це все ще більше ускладнюється, якщо Ви виводите записи за релевантністю, так як важко відразу сказати, що повинно бути релевантні: 3 точних входження запиту, або 10 входжень частин запиту. У мене на сайті перевагу завжди віддається точним вхожденіяі, але цей момент вже досить спірне. Безумовно, це складно, і якщо це Ви робите в перший раз, то кілька годин Ви точно витратите. Сподіваюся, що мій алгоритм реалізації пошуку на сайті через PHP Вам допоможе.

Поділися в соціальних мережах:

Схожі
Реалізація редиректу на phpРеалізація редиректу на php
Як зробити коментування на сайтіЯк зробити коментування на сайті
Пошук по базі даних з сортуванням за релевантністюПошук по базі даних з сортуванням за релевантністю
Як створити голосування на сайтіЯк створити голосування на сайті
Пошук битих посилань на сайтіПошук битих посилань на сайті
На сайті з`явилася нова категоріяНа сайті з`явилася нова категорія
Як зробити гарячі клавіші на сайтіЯк зробити гарячі клавіші на сайті
Як зробити реєстрацію та авторизацію користувачів на сайтіЯк зробити реєстрацію та авторизацію користувачів на сайті
Пошук по файлах на phpПошук по файлах на php
Як поміняти кодування на сайтіЯк поміняти кодування на сайті
» » Реалізація пошуку на сайті через php