Новый взгляд на поиск по сайту

в 10:39, , рубрики: поиск, поиск по сайту, поисковые системы, я пиарюсь, метки: , ,

Новый взгляд на поиск по сайту
Представляюм проект indexisto.com — поиск для сайтов и мобильных приложений.
Проект в альфе, просьба отнестись с пониманием (нажимать аккуратно). Тестовая выдача сейчас по английскому контенту музыкальной тематики. Нам также очень нужны early adopter'ы, если поиск заинтересовал пишите ЛС.

Новый взгляд на поиск по сайту

Хроники

История началась пару лет назад, когда я переехал с Windows на Убунту, а потом продолжилась с переездом на Mac. Подобный переезд может дать начало десятку историй, однако у меня случилась одна — я вдруг стал пользоваться поиском по операционной системе как основным инструментом навигации.

В обоих системах поиск глубоко интегрирован, разбит на категории (файлы, программы..), работает очень быстро и имеет ряд приятных особенностей, как-то учет ранее введенных запросов в результатах выдачи. Со временем поиск научился понимать меня с первой введенной буквы.

Я так же стал замечать множество других сценариев, когда поиск здорово экономит время. Поиск по «настройкам» в Chrome, поиск по контактам в Skype, переход на человека через поиск в Facebook, подсказка URL в адресной строке Firefox с учетом частоты заходов на сайты…

В тоже время ситуация с поиском на сайтах в 99% случаев удручающая. Складывается ощущение что никто не воспринимает поисковую строку всерьез и не тратит времени на подумать. Да да, и на Хабре тоже.
С этого все началось )

Подготовка

Сколотив команду единомышленников, мы решили, что ситуацию с «мертвой» поисковой строкой на сайтах можно кардинально изменить )

Начали с того, что искали примеры хорошего и плохого поиска. Заходя на новый сайт в первую очередь смотрели как работает поиск. В итоге где-то через пол года начали вырисовываться требования к поисковой строке, на которые оказали влияние Windows 8 (приятным ощущением), new.myspace.com (смелостью), Вконтакте (скоростью и локальными поисками по всему сервису) и множество других поменьше.

Пример «революционного» поиска с перекрытием основного экрана на new.myspace.com

Новый взгляд на поиск по сайту

Требования со стороны пользователя

Появились требования, что нужно от поиска пользователю:

  • скорость работы, речь о десятках миллисекунд от запроса до результата
  • минимум лишних кликов, instant search и переход на искомое сразу из выпадающих результатов
  • удобство. Если человек добрался до поисковой строки, не надо его зажимать в тесном инпуте шириной в 100px.
  • возможность быстро настроить две поисковые строки на странице — одну глобальную по всему сайту, вторую по текущему разделу
  • дополнительные параметры при поиске: категории, фасеты (тэги), сортировки
  • умный поиск. Нужно помнить, что искал человек раньше, куда кликают в выдаче другие люди и др.
  • очень умный поиск. Возможность «полусемантических» запросов, например, «большие красные диваны»

С первыми пунктами мы думаем, что справились, с последними двумя думаем, что в процессе )

Требования со стороны программиста/администратора:

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

  • интеграция как у Google Site Search — вставил JS и работает. Не смотря на наличие серверов поиска высокого уровня типа Solr, Sphinx даже простейшая их настройка займет время, не говоря уже о множестве прекрасных параметров с говорящими названиями dis_max, tie_breaker, cutoff_frequency, slop и т.д.
  • поменьше лазить в консоль, читать логи, ловить медленные запросы.
  • если менеджер спросит «а что люди у нас ищут» не пришлось бы панически делать самописную статистику
  • избежать двойной работы если придет задача впилить еще пару поисков

Здесь не по всем пунктам нам удалось достичь желаемого, в частности наш поиск ставится сложнее чем Google Site Search, но проще чем Solr, Sphinx

В итоге родился http://indexisto.com

Что такое indexisto?

  • Это полнотекстовый поиск в облаке. Проект сделан с применением технологий Lucene и Elastic Search и написан полностью на Java.
  • Не нужно самому устанавливать, настраивать и мониторить сервер полнотекстового поиска типа Sphinx, Solr
  • Импорт данных напрямую из базы данных. Для этого ставится, например, PHP агент, который по нашему пушу выполняет запросы типа SELECT title,body FROM posts… В базе обязательно надо создать пользователя с правами только на чтение и только на определенные таблицы. Запрос подписан секретным ключем.
  • Готовая быстронастраиваемая поисковая JS строка с множеством возможностей (виджеты, фасеты, гистограммы, сортировки). Вставка асинхронная, 50kb.
  • Картинки выкачиваются и жмутся автоматом. Потом их можно вставить в шаблон выдачи.
  • Удобная админка где прописываются запросы на выгребание данных, настраивается строка, запросы
  • Отчеты о поисках, логи, отчеты об импортах
Админка Indexisto:

Новый взгляд на поиск по сайту

Сейчас Indexisto это полнотекстовый поиск, в облаке с удобной админкой. В процессе мы решили много задач которые облегчают жизнь администратору. К примеру вы можете долго настраивать и экспериментировать с поисковой выдачей, в админке, но на сайте эти изменения появятся только после того как вы нажмете кнопку Activate search box. Это очень полезно при любых изменениях.
Вы можете легко клонировать настройки индекса и сделать еще одну выдачу, например по подразделу. Есть незаметные но сложные проблемы, которые мы решили. Например, в Elastic Search, нельзя просто так взять и изменить поле String на поле Int в уже проиндексированном типе документа в рамках одного индекса, маппинги окажутся несовместимыми. У нас эта проблема решена непрозрачно для админа, будет создан новый индекс, с другим внутренним именем, а внешнее имя останется прежним и все настройки сохранятся.

Движение в сторону умного поиска

Уже сейчас мы считаем клики в результаты выдачи, и в ближайшее время можно будет настроить бусты в выдаче по пользовательскому поведению и поиск по ранее найденному.
Еще одна интересная возможность — «полусемантический поиск». Так как мы берем данные напрямую из БД, вы можете делать довольно интересные вещи. Например, проиндексировать теги в текстовые поля. На примере нашей выдачи попробуйте набрать DISCO 80. Вы увидите релевантные группы которые играли диско в 80х:
Новый взгляд на поиск по сайту

Это конечно не rocket science, но можно делать и более интересные вещи, например при индексации товара:

  • Имя товара: Диван «Светлана 5» т
  • тип товара: диван
  • цена: 7000руб
  • цвет: красный
  • длина: 2400мм

вы можете прописать правила:

  • если длина > 2000мм добавить синонимы: БОЛЬШОЙ, ОГРОМНЫЙ, ДЛИННЫЙ
  • если цена < 10000руб добавить синонимы: ДЕШЕВЫЙ, СКИДКА, РАСПРОДАЖА

таким образом мы получим «полусемантический» поиск, у нас будут работать запросы типа:

  • БОЛЬШИЕ ДЕШЕВЫЕ ДИВАНЫ
  • ДЕШЕВЫЕ КРАСНЫЕ ДИВАНЫ
Движение в сторону еще более умного поиска

Не знаю насколько на хабре следят за проектами типа Freebase, Dbpedia и прочими попытками структурировать информацию, но там есть подвижки, которые можно свободно использовать в свое благо. Если не вдаваться в подробности, можно извлекать структурированную информацию.
Если вы торгуете операционными системами и у вас есть товар Microsoft Windows, вы можете обогатить описание множеством дополнительных данных которые в общем случае можно найти в правой колонке в Википедии:
Новый взгляд на поиск по сайту
Таким образом у вас будет работать запрос:
ОС ДЛЯ ARM

Сейчас проект в активной разработке, однако базовый функционал мы уже готовы бесплатно подключать early adopter'ам,
пишите.

Автор: Cher

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js