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

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

Основы Unreal Engine 5

Пройдя курс:

— Вы получите необходимую базу по Unreal Engine 5

— Вы познакомитесь с множеством инструментов в движке

— Вы научитесь создавать несложные игры

Общая продолжительность курса 4 часа, плюс множество упражнений и поддержка!

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

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]

Поиск. Описание модуля

Модуль Поиск осуществляет индексирование и поиск информации на сайте. Вся текстовая информация, которая попадает на сайт в виде статических HTML страниц или через модули (например, модуль Информационные блоки, модуль Форум и т.д.) автоматически индексируется. Поиск может осуществляться как по всей проиндексированной информации, так и по ее отдельным частям.

При формировании поискового запроса возможно использование языка запросов.


Язык запросов

Обычно запрос представляет из себя просто одно или несколько слов, например:

свежая рыба треска

По такому запросу находится информация, в которой встречаются все слова запроса.

Логические операторы позволяют строить более сложные запросы, например:

свежая рыба или пылесос

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

свежая рыба не скумбрия

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

Логические операторы

ОператорСинонимыОписание
И And, &, + Оператор логическое «и». Подразумевается, его можно опускать: запрос «свежая рыба» полностью эквивалентен запросу «свежая» и «рыба».
Или Or, | Оператор логическое «или» позволяет искать элементы, содержащие хотя бы один из операндов.
Не Not, ~ Оператор логическое «не» ограничивает поиск товарами, не содержащими слово, указанное после оператора.
( )
Круглые скобки задают порядок действия логических операторов. При формировании строки запроса убедитесь, что для каждой открывающейся скобки есть парная закрывающаяся.
» « Поиск точной фразы. Обычно используется для поиска цитат.

Компоненты

Модуль включает в себя следующие компоненты 2.0:

Компоненты модуля
НазваниеИмя в пространстве имен bitrixОписание
Форма поискаsearch.formСлужит для вывода формы поиска.
Поиск по заголовкам search.titleСлужит для вывода поля поиска по заголовкам с динамическими результатами.
Стандартная страница поискаsearch.
page
Служит для создания страницы поиска.
Поле ввода поискового запросаsearch.suggest.inputСлужит для вывода поля ввода поискового запроса с подсказкой.
Облако теговsearch.tags.cloudПредназначен для вывода облака тегов.
Форма ввода теговsearch.tags.inputПредназначен для вывода формы ввода тегов.

© «Битрикс», 2001-2023, «1С-Битрикс», 2023

Наверх

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

спросил

Изменено 11 лет, 5 месяцев назад

Просмотрено 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 не будет опубликован. Обязательные поля помечены *