Как сделать поиск по сайту php: Как сделать поиск по сайту с помощью PHP и MySQL?

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

Пример создания сайта на Django

В этом бесплатном курсе Вы увидите пример создания полноценного сайта на Django, что даст Вам отличный старт при создании уже собственных сайтов на этом фреймворке.

Чтобы получить Видеокурс,
заполните форму

E-mail:
Имя:

Другие курсы

Как создать профессиональный Интернет-магазин

После семинара:

— Вы будете знать, как создать Интернет-магазин.

— Вы получите бесплатный подарок с подробным описанием каждого шага.

— Вы сможете уже приступить к созданию Интернет-магазина.

Записаться

Другие курсы

Будьте внимательны к своим мыслям, они — начало поступков.

Лао-Цзы

У меня уже несколько раз просили написать статью о том, как реализовать поиск на сайте через PHP. Задача это непростая, я бы даже сказал — очень непростая, поскольку здесь имеется огромное количество нюансов и препятствий. В этой статье я разберу алгоритм поиска на сайте.

Давайте предположим, что на нашем сайте имеется множество различных материалов (статей, новостей, заметок и прочего). Всё это добро находится в базе данных. И наша задача — реализовать поиск на сайте. Простейший алгоритм следующий:

  1. Создать HTML-форму со строкой поиска, а также кнопкой «Submit«. В текстовое поле пользователи будут вводить поисковый запрос, а далее нажимать на кнопку.
  2. Получить поисковый запрос (как правило, передаваемый методом GET, но иногда применяют и POST), а также, в целях защиты от XSS, пропустить его через функцию
    htmlspecialchars()
    .
  3. Сделать выборку из соответствующих таблицы (со статьями, новостями, заметками и прочим) тех записей, в которых содержится поисковый запрос. Показываю примерный SQL-запрос для таких случаев: SELECT * FROM articles WHERE `text_article` LIKE %search%Соответственно, вместо search подставляется строка поиска.
  4. Получив записи, в нужном виде выводим их, желательно, по релевантности. Я, например, сделал у себя на сайте так: где больше всего совпадений — та статья и релевантнее, следовательно, ставлю её первой. Скорее всего, Вам этот способ оценки релевантности тоже подойдёт.

Многие из Вас скажут, что ничего сложного здесь нет. И будут отчасти правы, однако, давайте разберём такой пример строки поиска: «ищу этот текст«. Встаёт вопрос: «А что, собственно, ищется?

«. То ли ищется точное вхождение текста «ищу этот текст«. Или, быть может, ищется текст, где присутствуют все три слова, но которые могут следовать далеко не друг за другом. Или, возможно, ищется текст, где присутствует хотя бы одно из этих слов.

И вот здесь задача значительно усложняется. Можно сделать сложную систему синтаксиса (как в поисковых системах), например, ищется точное вхождение, если запрос задан в кавычках. А можно давать выбор пользователям, как именно они хотят проводить поиск (с помощью radio-кнопок). Таким образом, сделано у меня на сайте. Поэтому в предыдущий алгоритм добавляется ещё один пункт: составление SQL-запрос. Вот пример SQL-запроса, когда нужно вытащить все материалы, в которых имеется хотя бы одно слово из запроса «ищу этот текст«:

SELECT * FROM articles WHERE (`text_article` LIKE "%ищу%" OR `text_article` LIKE "%этот%" OR `text_article` LIKE "%текст%")

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

  • Создано 23.05.2011 23:37:00
  • Михаил Русаков

Предыдущая статьяСледующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov. ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Скрипт поиска по сайту на основе Яндекс.XML.

Скачать скрипт поиска по сайту на основе Яндекс.XML (28.11.2010):
Версия 0.6 (windows-1251)
Версия 0.6 (utf-8)

Назначение:

Организация на сайте поиска основанного на функциональных возможностях предоставляемых сервисом Яндекс.XML.

Пример реализации поиска по сайту, организованного на базе данного скрипта: https://steelsafe.ru/.

Возможности:

  1. На официальной странице реализации XML-поиска приведен рабочий пример PHP-скрипта. Главной отличительной особенностью нашего варианта является использование асинхронных запросов — XMLHttpRequest — иначе известных, как технология Ajax. То есть, при выполнении поиска и выводе данных не производится перезагрузка страницы. Ответ полученный от Яндекс.XML подгружается в фоне и моментально выводится, что позволяет сделать поиск максимально быстрым и удобным пользователю.
  2. Существует возможность добавления поля поиска на любую страницу сайта. При вводе запроса в таком поле производится перевод на основную страницу поиска и вывод искомых результатов. Таким образом можно создать, так называемое, сквозное поле поиска на всех страницах вашего сайта.
  3. Поиск по сайту реализованный на базе Яндекс.XML, работает по всем страницам находящимся в индексе Яндекса.

Требования:

Для добавления на ваш сайт данного скрипта необходимо соблюсти условия оговоренные в лицензии бесплатного сервиса Яндекс.XML. Ниже перечислены основные пункты:

  1. Сервер должен иметь выделенный IP, который необходимо зарегистрировать на странице Яндекс. XML. При необходимости, свяжитесь с хостером, услуга получения выделенного IP, может быть платной. Впрочем, как правило, плата очень небольшая.
  2. Ограничение на максимальное число запросов с сайта в сутки — не более 1000. Этого числа, в большинстве случаев, более чем достаточно. Для сайтов подключенных к Рекламной Сети Яндекса ограничение по количеству запросов не применяется, но необходимо установить код статистики указанный в 7 параграфе лицензии сервиса Яндекс.XML.
  3. На странице отображения результатов поиска должна стоять ссылка на Яндекс.XML.

Если вышеназванные условия не вызвали у вас проблем, можно переходить к установке, настройке и проверке скрипта.

Установка:

Установка заключается в разархивировании и загрузке файлов в каталог search на вашем сайте. Для настройки скрипта следует открыть текстовым редактором файл config.php и внести в него следующие изменения:

  1. Впишите в переменную $aLocal[«ip»] ваш выделенный IP сервера, который был зарегистрирован на Яндекс. XML.

    Пример:

    $aLocal[«ip»] = «*.*.*.*»;

  2. Впишите в переменную $aLocal[«url»] ваш адрес для совершения запроса, который можно найти на странице настроек.

    Пример:

    $aLocal[«url»] = «http://xmlsearch.yandex.ru/xmlsearch?user=name&key=********»;

  3. Впишите в переменную $aLocal[«host»] домен или поддомен вашего сайта.

    Пример для домена:

    $aLocal[«host»] = «php-myadmin.ru»;

    Пример для поддомена:

    $aLocal[«host»] = «forum.php-myadmin.ru»;

  4. Для проверки наличия в PHP обязательных расширений, а также корректности конфигурационных директив, запустите скрипт (search/test.php).

Если при запуске search/test.php вы не видите никаких ошибок, а только поле поиска, попробуйте воспользоваться им и поискать что-нибудь на сайте.

Теперь у вас есть рабочий, но голый шаблон страницы поиска, который следует встроить в страницу сайта. Процедура встраивания крайне индивидуальна, но ниже будут перечислены все обязательные условия необходимые для работы скрипта исходя из которых вы сможете впоследствии создать собственную страницу поиска.

Добавление на сайт:

  1. Для добавления формы поиска на страницу вашего сайта воспользуйтесь примером в файле (search/index.php).
    1. Обратите внимание на php код, который отвечает за передачу запросов с других страниц сайта:

      <?php

      $sSearch_text = (isset($_REQUEST[«find»]) && strlen($_REQUEST[«find»]) > 2)

      ? htmlspecialchars($_REQUEST[«find»]) : «»;

      ?>

    2. Обязательными являются строки подключения файла каскадых стилей (search/search.css) и JavaScript (search/search.js).

      <link href=»search.css» rel=»stylesheet» type=»text/css» />
      <script type=»text/javascript» src=»search.js»></script>

    3. И наконец, блок HTML кода внутри комментариев: «Поиск. Начало.» и «Поиск. Конец.»

  2. Для добавления поля поиска на любых других страницах вашего сайта, воспользуйтесь примером формы из файла (search/test.php). Здесь обязательным является только HTML код внутри комментариев «Вставка поля поиска. Начало.» и «Вставка поля поиска. Конец.»
  3. Оформление цвета, размера шрифта и т. д. осуществляется редактированием стилей в файле (search/search.css). Смотрите комментарии в нем.

После завершения всех подготовительных работ, удалите файлы search/test.php и search/readme.txt.

Обсуждение скрипта на форуме

Как создать поисковую систему на сайте с помощью php?

спросил

Изменено 11 лет назад

Просмотрено 6к раз

Я хочу создать поисковую систему на сайте с помощью php. Пользователи должны войти в систему, чтобы увидеть информацию. Поэтому я не могу использовать код поисковой системы Google или Yahoo.

Я хочу, чтобы движок сейчас искал текст и страницы, а не таблицы в базе данных mysql.

Кто-нибудь когда-нибудь делал это? Не могли бы вы дать мне несколько советов, которые помогут мне начать?

  • php
  • поиск

2

вам понадобится паук, который собирает страницы с вашего сайта (например, в задании cron), удаляет html и сохраняет их в базе данных

2

Возможно, вы захотите взглянуть на Sphinx http://sphinxsearch.com/, это поисковая система, к которой можно легко получить доступ из php-скриптов.

Вы можете немного схитрить, как это делает ненавистный сайт Experts-Exchange. Это коммерческий сайт вопросов и ответов для программистов, очень похожий на StackOverflow. Чтобы увидеть ответы, нужно заплатить, но иногда ответы появляются в результатах поиска Google. Совершенно очевидно, что EE представляют разные страницы для поисковых роботов и разные для людей. Вы можете использовать тот же трюк, а затем добавить Google Custom Search на свой сайт. Пользователи, которые вошли в систему, увидят результаты, в противном случае они будут перенаправлены на экран входа в систему.

4

У вас есть контроль над вашим сервером? Тогда я бы порекомендовал вам установить Solr/Lucene для индексации и SolPHP для взаимодействия с PHP. Таким образом, вы можете иметь фасеты и другие приятные функции полнотекстового поиска.

Я бы не просматривал фактические страницы, вместо этого я бы просматривал страницы без навигации и других вещей, не связанных с содержанием.

SOLR требует Java на сервере.

3

Я использовал sphider finally, бесплатный инструмент, который хорошо работает с php.

Всем спасибо.

Если содержание и заголовки ваших страниц уже управляются базой данных, вам просто нужно написать свою поисковую систему на php. Существует множество решений для запроса вашей базы данных, например:

http://www. webreference.com/programming/php/search/

Если содержимое содержится только в файлах html, а не в базе данных, вы можете хочу написать паук.

Возможно, вас также заинтересует кэширование результатов для повышения производительности.

Я бы сказал, что все зависит от размера и сложности вашего веб-сайта/веб-приложения.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Создание системы пользовательского поиска с использованием PHP и MySQL | Рио Алошиас

Используемые технологии: PHP, HTML, MySQL, phpMyAdmin, Windows 10

Работая в EyeRadar последние пару месяцев, одним из самых крутых навыков, которым я научился, было создание собственной поисковой системы с нуля. Поскольку каждому веб-сайту для сравнения цен нужна поисковая система, чтобы получать информацию о любимых продуктах и ​​брендах пользователя, я научился создавать поисковую систему, которая работает с базой данных MySQL и извлекает желаемый контент. В этом уроке я покажу вам, как создать простую поисковую систему для базы данных. Чтобы проверить этот проект на GitHub, нажмите здесь.

Для простоты я буду строго фокусироваться на HTML, PHP и SQL и игнорировать CSS; мы всегда можем вернуться и сделать его модным позже!

index.html code

Обратите внимание на атрибуты формы и атрибуты текстового поля HTML-формы:

  • action= «search.php» — действие формы является конечной целью. Это будет местоположение PHP-скрипта, который будет выполнять весь поиск.
  • method= « get » — тип метода GET возьмет текст, введенный в текстовое поле, и вставит его в URL-адрес для пользователя.
  • тип ввода = « текст» — тип «текст» просто сделает это, сделает ввод текстовым.
  • имя= « поиск» — «имя» может быть каким угодно.
  • тип ввода= » отправить» — тип «отправить» заставляет форму отправлять поисковый ввод скрипту.

Теперь, когда наша HTML-форма настроена, мы можем увидеть нашу основную форму поиска, показанную ниже:

index.html

Далее мы настроим серверную базу данных SQL. Поскольку наша поисковая система довольно проста, наша база данных MySQL также будет простой. Всего несколько полей для хранения наших данных. Чтобы создать базу данных и таблицу, я буду использовать phpMyAdmin для управления серверной частью базы данных MySQL. Чтобы узнать больше о настройке Apache, MySQL и PHP, нажмите здесь.

Изображение ниже является примером таблицы из базы данных, предоставленной MySQL. Создайте свою базу данных, как хотите; создайте таблицу в своей базе данных, а затем добавьте данные в таблицу.

таблица поставщиков и атрибуты

Теперь, когда внешний интерфейс и база данных готовы, мы можем перейти к самой интересной части создания скрипта поисковой системы. Сначала нам нужно получить входные данные для поиска, которые искал пользователь, и отформатировать их для нашего использования. Затем мы можем подключиться к базе данных и выполнить запрос. И, наконец, мы можем отобразить результаты поиска пользователю.

Начнем с создания некоторых переменных, на которые мы будем полагаться в сценарии.

$search — сохраняет поисковый ввод пользователя.

$button — сохраняет тип ввода кнопки поиска.

Затем подключитесь к MySQL с помощью функции mysqli_connect. Функция подключит вас к базе данных по вашему выбору. Затем запустите строку запроса для базы данных. Мы также получаем количество возвращенных строк. Используя количество строк, вы можете использовать условные операторы, чтобы определить, есть ли у вас результаты поиска для отображения пользователю.

Теперь, когда у нас есть все результаты из нашей базы данных, мы можем начать отображать эти результаты для пользователя. Для простоты HTML мы будем отображать 5 атрибутов продукта: название, бренд, URL-адрес, поставщик и цена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *