X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Многоступенчатый поиск по сайту своими руками, Попытка повысить эффективность поиска
Ultrastalker
Ultrastalker
Topic Starter сообщение 17.2.2016, 16:58; Ответить: Ultrastalker
Сообщение #1


Частый гость
**

Группа: User
Сообщений: 97
Регистрация: 2.7.2013
Из: Россия, Москва
Поблагодарили: 36 раз
Репутация:   7  


Небольшой собственный материал о способе, выбранном для повышения эффективности поиска на сайте «АвтоПандора».

Главная проблема на вышеупомянутом сайте заключается в том, что в каталоге присутствует более 200 тысяч наименований запчастей (на данный момент — около 240 тысяч, но судя по некоторым косвенным симптомам, это ещё цветочки), плюс куча тематических разделов, и разобраться в этой каше каким-то одним стандартным средством поиска (а тем более представить эту кашу в удобоваримом виде посетителю), мягко говоря, не слишком просто.

Какие стандартные средства имеются в виду?

Ну, во-первых, это предоставляемый Яндексом поиск по сайту. Недостатки — в результатах поисковой выдачи отсутствуют ссылки на страницы, не проиндексированные Яндексом. А индексирует он страницы долго, а то и вовсе не, исходя из своих секретных алгоритмов, тогда как ассортимент меняется каждый день: пришёл покупатель, продали ему лямбда-зонд — всё, ассортимент изменился. Яндекс узнает об этом позже, в лучшем случае — через месяц, когда ассортимент поменяется ещё сотни или тысячи раз. Кроме того, Яндекс не позволяет впихнуть в поисковую выдачу, скажем, ссылку на корзину (чтобы можно было сразу кинуть в корзину найденную запчасть). А хотелось бы.

Во-вторых, это собственный программный механизм поиска на PHP. Находит всё что угодно, при условии точного соответствия поискового запроса данным в базе. Позволяет оформить интерфейс поисковой выдачи по своему желанию, в том числе с кнопками добавления в корзину. Недостатки — не понимает синонимов (если не научить, конечно, но объём синонимов, сравнимый с накопленным Яндексом, увы, дело практически недостижимое), терпеть не может грамматических и орфографических ошибок, транслитерации и неверно переключенной раскладки клавиатуры. Правда, может обнаруживать сходство между некоторыми словами (к примеру, «абсорбер» и «адсорбер»), но для детекции ошибок этого умения даже при тонкой настройке либо недостаточно, либо чересчур — начинает обнаруживать сходство между словами «Ливерпуль» и «Манчестер».

Немного поразмыслив, разработчик (он же — автор данного поста) пришёл к выводу о необходимости создания многоступенчатого гибридного поиска, своего рода поэтапной фильтрации поисковых запросов посетителей сайта. Через некоторое время были выработаны три основных постулата гибридного поиска, которые приведены ниже:
1. Посетитель ничего не должен знать о многоступенчатости поиска — он должен сразу получать поисковую выдачу.
2. Посетителя категорически нельзя загружать сложными формами поиска с кнопками типа «и/или», «только в разделе/везде» — весь внешний инструментарий должен представлять собой поисковую строку и кнопку «Найти».
3. В зависимости от разных поисковых запросов поисковая выдача должна быть сформирована разными программными средствами.

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

1-я категория. Те, кто ищет определённые разделы сайта (например, «запчасти», «контакты» или «автосервис»). Их поисковые запросы, как видно из примеров, сравнительно короткие, общераспространённые и легко предсказуемые, а также соответствующие каждый одному конкретному разделу сайта. К этой же категории можно отнести «лентяев», вводящих простые поисковые запросы из некоего ленивого, случайного любопытства («ну-ка, что у них там за запчасти?»), а то и злорадства («щас посмотрим, как ваш поиск это проглотит!»). К слову говоря: как это ни смешно, но мне доводилось неоднократно встречать интернет-магазины запчастей, встроенный поиск которых (при наличии у них весьма серьёзного ассортимента) бодро рапортовал об отсутствии результатов по слову «запчасти».

2-я категория. Посетители с опытом поиска по сайту — то есть те, кто чаще всего вводит точные поисковые запросы, отчётливо понимая, что они хотят найти — как правило, поисковый запрос представляет собой часть наименования запчасти («патрубок cruze») или оригинальный номер производителя.

3-я категория. Посетители, набирающие поисковые запросы в неверной раскладке клавиатуры, с грамматическими или орфографическими ошибками, с использованием малораспространённых синонимов или наоборот, с жаргонизмами («дворник на лобовуху крузак»). Эту категорию можно по отношению к двум предыдущим категориям условно назвать «все остальные».

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

Шаг 2-й. Первым делом поисковый механизм анализирует поисковый запрос посетителя на содержание так называемых «подставных» запросов. «Подставной» запрос, как ясно из его названия — это заранее заданный запрос, который выводится в выпадающей из поисковой строки подсказке и представляет собой простое слово или словосочетание, к примеру, «контакты» или «запчасти».
Прикрепленный файл  img01.jpg ( 74,28 килобайт ) Кол-во скачиваний: 6

Если поисковый запрос точно соответствует «подставному», то вместо результатов поиска посетитель просто автоматически редиректится (переадресуется) в соответствующий раздел сайта при помощи отправки заголовка с адресом (HEADER). Этот подход представляется разработчику более уместным, нежели вывод в ответ на поисковый запрос «запчасти» фразы «да, они у нас есть, и их у нас много». Таким макаром на данном шаге отсеивается (точнее, обслуживается поисковым механизмом) 1-я категория посетителей.

Шаг 3-й. Обслуживание 2-й категории посетителей. Ну здесь всё сравнительно просто: запрос в MySQL с опцией LIKE и запросом данных из соответствующих полей таблиц, создание списка найденных запчастей, вывод на странице поисковой выдачи. C прерыванием поиска, если он успешен (то есть если найден хотя бы один результат). На данном шаге отсеивается (обслуживается) 2-я категория посетителей.

Шаг 4-й, финальный. Обслуживание 3-й категории посетителей, тех, которые «все остальные». Критерии: на 2-м шаге редиректа в другой раздел не произошло, 3-й шаг отрапортовал о нулевом количестве найденных результатов (благо механизм запросов в MySQL позволяет). Остаётся последняя инстанция — Яндекс. Пусть разбирается с синонимами, жаргоном и ошибками. Здесь также всё сравнительно несложно: редиректим пользователя на страницу поисковой выдачи Яндекса отправкой HEADER с указанием в адресной строке поискового запроса (благо Яндекс послушно принимает такие GET-запросы от любого web-сценария, а не только от собственной поисковой строки с водяным знаком, лишь бы поиск был предварительно настроен в инструментарии). Выглядеть такая строка будет приблизительно так:
https://yandex.ru/sitesearch?searchid=20229...%ED%E4%EE%F0%E0
(обратите внимание на параметр searchid в адресной строке — он обозначает идентификатор поиска, параметр же text — это собственно поисковый запрос).

Напоследок добавлю, что косвенным свидетельством эффективности такого варианта поиска могут служить хотя бы неоднократные последующие возвраты пользователей поиска по сайту с новыми (уже другими, естественно) поисковыми запросами. Буду рад, если приведённый мной способ окажется вам полезным.


--------------------
3D-моделирование в Maxon Cinema 4D: учусь сам, учу других.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужно походить по сайту и описать свой кейс
задание для всех желающих, не нужны спец.навыки
18 lynxx 1695 Сегодня, 14:17
автор: Smspva
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыВажно мнение по сайту
Буду признателен мнению по amosupport.by
7 malo 744 Вчера, 18:17
автор: Catherine_Molli
Открытая тема (нет новых ответов) Поиск страницы VK.COM по номеру мобильного телефона.
10 detalist 3204 4.12.2017, 12:28
автор: detalist
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСайту 1 год, а посещаемости нет. Почему?
17 ARSales 1873 30.11.2017, 16:46
автор: Rebarun
Открытая тема (нет новых ответов) Поиск. Скрипт а-ля pikabu.
1 Упс 760 20.11.2017, 8:19
автор: codename65


 



RSS Текстовая версия Сейчас: 14.12.2017, 19:44
Дизайн