Реализация поиска на сайте через PHP
Основы Laravel
Пройдя курс, Вы узнаете:
— Как установить и настроить Laravel
— Всю необходимую базу по Laravel
— Как создавать несложные сайты на Laravel
Общая продолжительность курса 4.5 часа, плюс множество упражнений и поддержка!
Чтобы получить Видеокурс,
заполните форму
E-mail: | |
Имя: | |
Другие курсы
Как создать профессиональный Интернет-магазин
После семинара:
— Вы будете знать, как создать Интернет-магазин.
— Вы получите бесплатный подарок с подробным описанием каждого шага.
— Вы сможете уже приступить к созданию Интернет-магазина.
Записаться
Другие курсы
Человек не будет наслаждаться едой и питьем, если не перестрадает от голода и жажды.
Аврелий Августин
У меня уже несколько раз просили написать статью о том, как реализовать поиск на сайте через PHP. Задача это непростая, я бы даже сказал — очень непростая, поскольку здесь имеется огромное количество нюансов и препятствий. В этой статье я разберу алгоритм поиска на сайте.
Давайте предположим, что на нашем сайте имеется множество различных материалов (статей, новостей, заметок и прочего). Всё это добро находится в базе данных. И наша задача — реализовать поиск на сайте. Простейший алгоритм следующий:
- Создать HTML-форму со строкой поиска, а также кнопкой «Submit«. В текстовое поле пользователи будут вводить поисковый запрос, а далее нажимать на кнопку.
- Получить поисковый запрос (как правило, передаваемый методом GET, но иногда применяют и POST), а также, в целях защиты от XSS, пропустить его через функцию htmlspecialchars().
- Сделать выборку из соответствующих таблицы (со статьями, новостями, заметками и прочим) тех записей, в которых содержится поисковый запрос. Показываю примерный SQL-запрос для таких случаев:
Соответственно, вместо search подставляется строка поиска. - Получив записи, в нужном виде выводим их, желательно, по релевантности. Я, например, сделал у себя на сайте так: где больше всего совпадений — та статья и релевантнее, следовательно, ставлю её первой. Скорее всего, Вам этот способ оценки релевантности тоже подойдёт.
Многие из Вас скажут, что ничего сложного здесь нет. И будут отчасти правы, однако, давайте разберём такой пример строки поиска: «ищу этот текст«. Встаёт вопрос: «А что, собственно, ищется?«. То ли ищется точное вхождение текста «
И вот здесь задача значительно усложняется. Можно сделать сложную систему синтаксиса (как в поисковых системах), например, ищется точное вхождение, если запрос задан в кавычках. А можно давать выбор пользователям, как именно они хотят проводить поиск (с помощью radio-кнопок). Таким образом, сделано у меня на сайте. Поэтому в предыдущий алгоритм добавляется ещё один пункт:
SELECT * FROM articles WHERE (`text_article` LIKE "%ищу%" OR `text_article` LIKE "%этот%" OR `text_article` LIKE "%текст%")
Соответственно, в скрипте поиска Вы должны генерировать подобные SQL-запросы, посылать к базе данных, получать ответ и выводить его. Это всё ещё больше усложняется, если Вы выводите записи по релевантности, так как трудно сразу сказать, что должно быть релевантнее: 3 точных вхождения запроса, либо 10 вхождений частей запроса. У меня на сайте предпочтение всегда отдаётся точным вхожденияи, но этот момент уже достаточно спорен.
- Создано 23.05.2011 23:37:00
- Михаил Русаков
Предыдущая статьяСледующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
<a href=»https://myrusakov.Она выглядит вот так:
- Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Как сделать умный поиск по сайту? | PHPClub
MasterYan
Новичок
- #1
Как сделать умный поиск по сайту?
Как сделать так что б при вводе ‘вися пупкин’ поисковик выдавал:
Быть может, вы искали: «вася пупкин»
http://yandex. ru/yandsearch?text=вися+пупкин&clid=50368&lr=187
Вообще как реализированна коррекция слов в поисковиках?
Может есть какие-то статьи по том как улучшить поиск по сайту??
PS: искать с помощу Яндекса не предлагать
tf
крылья рулят
- #2
поиск на сайте введи в поисковый запрос слево вверху и почитай пару тем
Adelf
Administrator
- #3
Sphinx — это то самое волшебное средство, что недавно меня просто очаровало и надолго. Изначально он просто хорошо и ужасно быстро ищет. А «быть может вы искали» — есть статья от автора Sphinx — он там предлагает варианты как такое реализовывать. Это чуть сложней, но все реализуемо.
korchasa
LIMB infected
- #4
Статья называется немного не так
Adelf
Administrator
- #5
Ну я это не название статьи приводил, а название фичи
Активист
Активист
- #6
У меня именно так и реализовано — sphinx и [m]pspell[/m]
Вот код, которой мной используется, писался очень быстро, но алгоритмы можно посмотреть.
http://phpclub.ru/paste/index.php?show=2331
Результат работы этого кода примерно такой
Код:
Вы искали: туплый пол Возможно вы имели ввиду: теплый пол ? (возможно в вашей поисковой фразе допущена орфографическая ошибка) Результаты для: теплый пол Теплые полы Ekkotek Термостат уже входит в комплект [url]http://www.***.ru/ru/catalog/group-152/showGroup.html[/url] | Надено в каталоге Теплые полы Ekkotec ... отопления имеют несколько основных функции применения - теплый пол, обогрев помещений, антиобледенение, обогрев трубопроводов. Основная - теплый пол. Теплый пол - экономичный источник тепла, основанный на преобразовании ... Комплектация Расчет обогреваемой площади и подбор комплекта Прайс лист на теплые полы Ekkotec [url]http://www.***.ru/ru/pages/komplekt.html[/url] | Надено в страницах Теплые полы Thermo ... отопления любых типов жилых и нежилых помещений – Теплый пол Thermoтм производства Thermo Industri . .. окружающей среде. При этом стоимость установки Теплого пола Thermoтм на 40 – 50 % ... на терморегуляторы Thermoregтм – 2 года. Универсальность Теплый пол Thermoтм может использоваться в любом ... [url]http://www.***.ru/ru/pages/Teplye_poly_Thermo.html[/url] | Надено в страницах
MasterYan
Новичок
- #7
Sphinx будет пахать на обычном хостинге с (php + MYSQL) ?
есть ли уже готовые решения для с русско-английским словарем?
Adelf
Administrator
- #8
>> Sphinx будет пахать на обычном хостинге с (php + MYSQL) ?
На обычном shared-хостинге за копейки — нет. Его надо ставить отдельно демоном(или сервисом в Win). Это дают на VDS-хостингах, ну и всякие Colocation/Dedicated конечно.
MasterYan
Новичок
- #9
а что б на обычном работало, есть какие-то варианты?
Alexandre
PHPПенсионер
- #10
а что б на обычном работало, есть какие-то варианты?
Нажмите для раскрытия. ..
никаких.
есть еще UDF , которые выдают к-энт похожести и пр. фичи для сравнения, но это тоже уже не обычный хостинг…
Как создать поисковую систему на сайте с помощью 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-адрес, поставщик и цена.