Как стать автором
Обновить

От поисковика на сайте до собственной поисковой системы

В этой статье хочу обсудить с Вами такую проблему как поиск на сайте и предложить свой вариант ее решения. В сети огромное множество сайтов, которые оснащены отвратительным поиском, еще больше сайтов вообще без этой функции. Даже вошло в привычку не искать на сайте, а вбивать в поисковик «запрос site:domain.com» или просто «запрос domain». Почему такой важной вещи, как поиск, уделяется так мало внимания? Давайте разбираться вместе.


Давным давно, когда можно было увидеть Pege Rank, а вебмастера играли на ТИЦ в карты, я создал свой первый сайт на тему автомобилей. Работая на простой CMS, он висел на дешевом хостинге без возможности установить базу данных. Тогда впервые мне пришла идея претворить свой первый проект в крупный портал с удобным поиском. Как только я поделился этой идеей со своим другом, который в то время успешно занимался разработкой и продвижением сайтов в поисковых системах (ПС), сразу же получил неутешительный фидбэк. Мол, это возможно, и даже одному клиенту он попытался это сделать, однако это настолько сложно, что проще сделать еще несколько сайтов и добавить их в сапу, чем заморачиваться над одним проектом с туманными перспективами монетизации. Что-то подобное я уже слышал от сварщика дяди Васи, когда пришел к нему с просьбой сварить две алюминиевых детали. Он долго рассказывал о специальных электродах, которых у него нет в наличии, аргоне, и что в молодости он с напарником из алюминия смастерил небольшой летательный аппарат, но в моем случае проще отказаться от алюминия и сделать все из обычного железа.


С тех пор прошло много апдейтов ПС, и что же мы видим сейчас? Есть ли простое и быстрое решение, дабы сделать поиск на сайте? Так сказать, появилась ли у дяди Васи аргоновая сварка? Расцвели ли яблони на Марсе? Провел ли Илон Маск тест-драйв новой Tesla Mars? Запустили ли Джеймса Уэбба в космос или до сих пор его тёзка переворачивается в гробу?


Итак, вернемся к нашим баранам. Когда говоришь фразу «поиск на сайте», у ребят, которые в теме, сразу есть готовый ответ Elastic или Sphinx. А когда говоришь «собственная поисковая система», то они отвечают — Elactic Site Search, но это очень дорого! Так, стоп, здесь, пожалуйста, поподробнее! Есть бесплатное решение, а есть такое же, но по высокой цене. Кто покупал Windows у Microsoft в нулевых, когда работали радиорынки?


Как говорится, дьявол кроется в деталях. Elastic и Sphinx- это поисковые движки, которые ищут по базе данных сайта и являются достаточно хорошим решением, если у вас один сайт. Если сайтов большее количество или нет возможности получить доступ к базам данных сайта, или она вообще отсутствует, то это не лучший вариант. Теоретически можно написать краулер, который будет сканировать сайты, сохранять полученную информацию в базу и там уже использовать для поиска Elastic или Sphinx. Но это лишь умозрительно, я, по крайней мере, готовой реализации не встречал.


А что там с платным Elactic Site Search?


За поиск только по одному домену до 5К страниц необходимо будет заплатить $79/month, а если нужен поиск по большему количеству сайтов и страниц, то — $199/month + $30 за каждый сайт и столько же за каждые дополнительные 5К страниц. Если я захочу сделать поисковую систему, где будет 1000 интернет магазинов, то это будет стоить $199 + $30*1000 = $30 200 без одного доллара в месяц?

Да!

А как это вывести в профит?

Никак!


А ведь так хотелось сделать поисковик, в котором можно было бы искать рецепты с картинками или агрегировать сайты по недвижимости и выводить в серпе адрес, планировку квартиры, телефон продавца/арендодателя или собрать информацию о продаже автомобилей со всех досок объявлений и не только.


Неужели все эти мечты разобьются о непреодолимую скалу высотою в $30 200/month? Неужели мечты о собственной поисковой системе останутся лишь слабыми электромагнитными импульсами в глубинах моего мозга, периодически вспыхивающие воспоминаниями в момент троллинга знакомыми программистами, которые неосторожно были посвящены в эту безумную идею?


Нет! Not! Non! Net! Não! No! Nie! Нi!


Именно столько языков понимает поисковая система Kavunka, автором которой я являюсь. Как и обещал в начале статьи, это мой вариант решения проблемы поиска на сайте и создания маленькой поисковой системы. Прям как маленький свечной заводик, к которому потянется вереница интернет-верующих в силу товаров и услуг. В поисках низких цен и заветных скидок, они создадут, пусть небольшой, но такой вожделенный интернет-трафик. А в период великих праздников, как-то «черная пятница» и «предновогодние скидки», мощности домашнего датацентра будет не хватать и придется отправляться в святая святых — на небеса к Амазон и заказывать дополнительные серверы для покрытия поисковых нужд интернет-поломников. Уж прости меня, дорогой читатель, но без стеба над столь авантюрной идеей это выглядело бы по-детски наивно. Несмотря на то, что в современном мире принято раздувать щеки, демонстрировать важность и революционность своего продукта, даже если это всего лишь приложение «фонарик», я убежден, что самокритика и самоирония принесут больше пользы продукту, нежели безумная любовь к своему творению и болезненная реакция на хейт.


Давайте посмотрим, что там у нас под капотом у Kavunka 2.1


Более 20K строк кода чистокровного Си будут стабильно работать на одном ядре с 1 GB RAM под управлением CentOS 7 и держать в индексе 10 сайтов по 1000 страниц. Если у Вас домашний ПК или сервер с большим объемом оперативной памяти, то легко можно загнать в индекс миллионы страниц. Кеш с индексом одного миллиона будет весить всего 150GB. Вы спросите, почему так мало? Потому что в кэше хранится чистый текст без тегов и javascript — кода.


Как было уже сказано выше, софт распознает 8 языков: ru, en, it, fr, pt, es, pl, uk. В индекс попадут страницы нужного вам языка, а встроенные алгоритмы будут фильтровать страницы с неуникальным контентом и плохим качеством.


В Kavunka 2.1 реализован стемминг, добавлена возможность присоединять к выдаче результаты веб-скрепинга, это позволило сделать выдачу более репрезентативной. Для сканирования javascript сайтов предусмотрен способ получения html-кода с помощью Firefox при использовании Selenium WebDriver.


Более подробнее о веб-скрепинге


Делается сие чудесное действие параллельно с краулингом по заранее созданному шаблону. Для этого в админ-панеле присутствует вкладка TESTER где легко создаются и тестируются регулярные выражения, производятся другие настройки веб-скрепинга.



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


Управление поисковой системой и мониторинг процесса сканирования осуществляется с помощью дружественного веб-интерфейса. Администратор ПС максимально избавлен от необходимости работать с консолью.




Особенности и недостатки


Основной особенностью является то, что Kavunka не использует базы данных, индекс и данные хранятся в файлах. Является ли это недостатком? Считаю, что нет! Теперь, справедливости ради, о недостатках:

  • ассоциативный массив состоит только из словоформ запроса;
  • отсутствует база знаний;
  • отсутствует сознание и, как следствие, поисковая система не может рассуждать о смысле жизни.


Где можно увидеть пример и как установить?


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


Для установки поисковой системы нам понадобится CentOS 7 с уже установленными apache и php. Устанавливаем wget:


sudo yum install wget

Скачиваем скрипт, который произведет необходимые настройки и установит софт:


wget -P /tmp/ https://kavunka.biz/downloads/x6w7dfty5f87se4d1fg7o3sdr/install/kavinstall.sh

Делаем скрипт kavinstall.sh исполняемым, устанавливаем владельца и приступаем к установке:


chmod +x /tmp/kavinstall.sh

chown -R root:root /tmp/kavinstall.sh

/tmp/kavinstall.sh

Далее величайшее произведение Казимира Малевича будет осквернено следующими надписями:


KAVUNKA installation
1) KAVUNKA + Selenium & additional repositories + firewall, iptables and SELinux configuration"
2) KAVUNKA + firewall, iptables and SELinux configuration"
3) exit

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

  • если Вы максималист и хотите взять от ПС все по максимуму, не раздумывая, жмите 1;
  • если Вы оптималист и не собираетесь добавлять в поисковую систему javascript-сайты — пункт 2 то, что Вам нужно;
  • если же Вы скептик, и доверяете только известным брендам в сфере поиска, пункт 3 создан специально для Вас.


После завершения установки и перезагрузки сервера необходимо в браузере набрать http://[IP-address]/kavunka-admin/


[IP-address] — комбинация натуральных чисел и точек, которые можно узнать, набрав в консоли волшебную последовательность букв:


ifconfig

На этом этапе Вы должны попасть на страницу авторизации (admin:123456). Далее Вас будет ожидать зеленая надпись «Getting License!» требующая ввести License ID и KAY. За всем этим отправляемся сюда, регистрируемся и создаем лицензию в CL Panel. В поле «Server IP» необходимо ввести внешний IP-адрес. Для получения используйте:


wget -O - -q icanhazip.com

Выбираем язык и жмем +New. После этого будет сгенерирована лицензия с определенным ID и KAY. Срок действия лицензии составит 14 дней, если Вы не собираетесь использовать программное обеспечение Kavunka в коммерческих целях, по запросу в сапорт ее можно бесплатно подлить на 180 дней.


Процедура добавления сайтов очень проста. Переходим во вкладку «TASKS», нажимаем длинную синюю кнопку «add+», выбираем «Octopus» и в поле «Start Page» вводим страницу, с которой краулер начнет сканировать сайт. Если Вы не максималист и не хотите сильно нагружать сканируемый сайт, уменьшите число в поле «nit» до 200. Далее опять длинная кнопка «add+», выбираем «Worder», жмем «OK», и последний раз жмем «add+» потом «Kavunka» и «OK». В бордовой таблице «List Table» находим кнопку «Start», жмем, выбираем «Start» потом «OK». Теперь можно откинуться на спинку кресла и наблюдать, как работает поисковая система. После завершения всех процессов, вы можете перейти во вкладку «SEARCH» и попытаться найти интересующую Вас информацию на том сайте, который вы отсканировали.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.