Найти тему
Merion Academy

7 эффективных поисковых систем с собственным сервером для вашего продукта

Привет! На связи Merion Academy - платформа доступного IT образования.

Это лишь кажется сложным, но на самом деле процесс добавления эффективной функции поиска в ваше приложение – это простая и быстрая задача. Вот несколько хороших рекомендаций!

И хотя за последние пару-тройку десятилетий довольно многие технологии произвели на нас впечатление, поиск – одна из немногих технологий, которые стали неотъемлемой частью нашей жизни. Он везде – онлайн-магазины, блоги, базы знаний и т.д. И это не потому, что поле поисковая строка и значок в виде лупы выглядят круто, а потому, что он выполняет функцию, в которой мы все нуждаемся.

Если у вас есть бизнес, и вы ищете хорошее решение для реализации поиска или вы решили сменить текущую реализацию, то что вы будете делать?

Благо, вам не нужно платить эти дурацкие лицензионные сборы и содержать команду из 20 разработчиков и системных администраторов. Сейчас я поделюсь с вами несколькими рекомендациями, касающимися поисковых систем. Вы сможете установить и интегрировать их в два счета, особенно если у вас небольшой бизнес, а команды разработчиков состоят из 1-2 человек.

1. MeiliSearch

MeiliSearch – это одна из самых лучших и высококлассных поисковых систем, с которыми вы когда-либо встречались.

 📷
📷

Итак, что же заставило меня добавить MeiliSearch в топ моих рекомендаций?

Вот что.

Открытый исходный код

Весь исходный код MeiliSearch находится в открытом доступе на GitHub. Это значит, что разработчики могут самостоятельно изучить любой фрагмент кода. Компании, в свою очередь, могут быть уверены в качестве и назначении (например, в отсутствии закладок и сканеров в программах). И, разумеется, опытные разработчики могут помочь прокачать технологию еще больше.

Простой пользовательский интерфейс

В MeiliSearch нет каких-то чересчур сложных правил (например, «a - b» - это «а», а не «b»). Вам нужно просто ввести понятный запрос, и постепенно начнут появляться результаты. Эта система крайне устойчивая и гибкая – она может предоставлять точные результаты даже при наличии ошибок и использовании синонимов. Кроме того, она поддерживает несколько языков.

Простая и быстрая разработка

MeiliSearch обязательно понравится разработчикам! Это не просто настраиваемая и масштабируемая платформа, она обеспечивает взаимодействие посредством REST API! Кроме того, у нее отличная и подробная документация. Даже несмотря на то, что выполнение HTTP-запросов на любом языке – довольно-таки простая задача, для тех, кто очень спешит, есть примеры на пяти языках (JavaScript, Ruby, Python, Golang и PHP).

Поисковые программы должны быть простыми в использовании и настройке. По сути MeiliSearch соответствует всем этим пунктам!

2. Solr

Solr был создан несколько лет назад в рамках проекта Apache. В его основе лежит довольно известная и надежная библиотека Lucene, которая также обеспечивает работу поисковой программы ElasticSearch. Все эти туманные речи означают лишь одно – Solr является одной из самых мощных, масштабируемых, многофункциональных и надежных поисковых программ, соответствующих стандартам.

 📷
📷

Эту программу используют такие компании-гиганты, как Disney, eBay, Netflix, Zappos и BestBay. И все же, это не значит, что вы не можете запустить упрощенную установку (допустим, на одном компьютере, без масштабирования и без обработки отказов – ну, иногда так можно) и использовать этот локомотив под названием Solr.

Так почему Solr?

На это есть несколько веских причин.

Точная и мощная

Solr – это одна из самых точных, эффективных и мощных поисковых программ в мире. Кроме того, это программа с открытым исходным кодом. Это во многом объясняет, почему различные «светилы» (как упоминалось ранее) сразу же стали им пользоваться. Его способность обрабатывать документы и отвечать на поисковые запросы не имеет аналогов.

Простая установка и сопровождение

Установить Solr – это также просто, как распаковать и запустить программу. Если мы говорим о простых системах с одним компьютером, то здесь не требуется какого-то мудреного подхода к сопровождению. Обязательно следите за использованием оперативной памяти, так как поисковые программы в целом и технологии на базе Java в частности могут быть весьма требовательны в том, что касается оперативной памяти. Это происходит из-за того, что они хранят или пытаются хранить в ней все, дабы обеспечить быстрое чтение/запись.

Панель администратора

У Solr есть специальная панель администратора, с помощью которой вы можете осуществлять визуальное наблюдение и настройку. Имея некоторую подготовку, даже те, кто не является разработчиками, могут научиться читать основные графики. Не многие поисковые системы, рассмотренные в этом списке, обладают такой функциональной возможностью.

 📷
📷

Источник: официальный сайт

Управляемая API и соответствующая стандартам

Solr предоставляет интерфейс результатов в API, который может обрабатывать несколько форматов: JSON, CSV, XML и двоичный формат. Он выводит данные наблюдений в соответствии со стандартом JMX. Это является огромным преимуществом для Java-разработчиков.

О Solr можно говорить и говорить, но нам не хватит на все это времени. Скажу лишь, что Solr – это высококлассная программа, работая с которой вы никогда не допустите ошибок, при этом абсолютно неважно, с каким типом данных вы работаете.

3. Elasticsearch

Elasticsearch был и, надо полагать, остается первопроходцем в области поиска в тексте произвольного формата. Собственно говоря, если вы попросите программиста или системного администратора порекомендовать вам поисковую программу, то, скорее всего, Elasticsearch будет единственным названием, которое они вспомнят. Конечно, сейчас большая часть людей также порекомендуют что-то на подобие Algolia, но мы уже рассказывали, что из этого выйдет.

 📷
📷

Не пугайтесь кнопки «Start free plan» (Начать использовать бесплатную пробную версию) на скриншоте выше. Несмотря на то, что основная технология Elasticsearch является бесплатной и общедоступной, компания все же пытается как-то монетизировать свои труды и ориентироваться на предприятия. Так что, то, что вы здесь видите, это пробная версия из облачного сервиса, который упрощает процесс управления Elasticsearch, особенно при использовании кластеров.

Уфф, сколько всего нужно разобрать. Давайте немного подытожим: Elasticsearch имеет открытый исходный код и является бесплатной, любой желающий может ее настроить и использовать без каких-либо ограничений.

А теперь, как и было задумано, давайте рассмотрим причины, почему нужно выбрать Elasticsearch:

  • Продуманная от и до, проверенная в бою поисковая программа. Это значит, что у вас, как пользователя Elasticsearch, гораздо больше шансов найти решение при появлении «непонятных» ошибок.
  • Большое внимание к кластеризации, масштабируемости и асинхронному режиму записи.
  • Доступ через простой REST API (который в итоге скопировали все, кому не лень).
  • Документо-ориентированная, но при необходимости поддерживает схемы.
  • Невероятно быстрые и точные результаты. Настраиваемая скорость поиска.
  • Превосходная документация (как по объему, так и по практической значимости).
  • Полноценная облачная платформа для поиска и анализа (стек ELK), если, конечно, вы готовы платить за свое удобство.

Единственное, к чему бы я придрался, это потребление огромного количества оперативной памяти. Я имею в виду, что, будучи консультантом, достаточно сложно убедить клиента вкладывать в сервер по 20$ ежемесячно, а это, к сожалению, даже не близко к тому, что требует Elasticsearch.

4. Typesense

Typesense – это легкая, простая, но при этом мощная поисковая программа. Если вы ищете что-то полезное и простое, вам стоит попробовать.

 📷
📷

Одна из лучших особенностей Typesense – это то, что вы можете опробовать ее прямо на их сайте. Это может позволить вам избежать разочарования и сэкономить время. Будет обидно, если вы все настроите и попробуете API… и вдруг обнаружите, что одна или несколько функций работают совсем не так, как вам бы хотелось.

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

 📷
📷

Как вы можете видеть, эта область находится прямо под самой верхней. Я ввел запрос «tra» в поисковой строке, а ниже демонстрируются подходящие результаты из базы данных книг (а также метаданные – общее количество результатов, текущая страница и т.д.).

Если вы выбираете поисковую программу, то стоит отметить, что у Typesense есть множество преимуществ:

  • Технология, которая лежит в основе программы, является общедоступной.
  • При необходимости легко настроить инфраструктуру высокого уровня доступности.
  • Лояльна к опечаткам и прочему «шуму» в поисковых запросах.
  • Продвинутая система фильтрации для тех, кому требуется полный контроль над результатами поиска.
  • Простой REST API, хотя их документация заставит вас изрядно попотеть, чтобы найти его!
  • Для некоторых основных языков (JavaScript, Python, Ruby и PHP) доступны клиенты (SDK).

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

В общем и целом, Typesense имеет место быть, если вам нужно что-то маленькое, удобное, точное и надежное.

5. Sonic

Sonic славится тем, что является альтернативой ElasticSearch и занимает при этом всего «несколько Мб оперативной памяти».

Как такое возможно?

Что ж, как мы знаем, JVM (Java Virtual Machine – виртуальная машина Java) потребляет довольно много оперативной памяти (обычно только при запуске она съедает порядка 1 Гб оперативной памяти). В таком случае неудивительно, что нечто, написанное на языке Rust (который обеспечивает полный контроль и безопасности доступа к памяти для разработчиков) может работать так же быстро и использовать лишь несколько Мб оперативной памяти.

 📷
📷

Расслабьтесь! Это просто талисман проекта.

На момент написания статьи среди пользователей Sonic числились несколько компаний, хотя я уверен, что есть еще парочка, которые просто не удосужились вписать сои названия. Я не помню, как и когда, но с Sonic я познакомился сравнительно рано. Несмотря на то, что я был рад найти альтернативный вариант с низким потреблением памяти, я считал, что программе потребуется какое-то время, чтобы стабилизироваться и решить все скрытые проблемы. Что ж, судя по всему, они этого более или менее добились, а вот то, насколько популярным станет Sonic, покажет только время.

Окей, размышления в сторону. Так почему вам стоит рассмотреть Sonic в качестве программы для вашей организации/проекта?

Вот несколько причин:

  • Крайне малый объем требуемой памяти (если мы говорим о поисковых системах).
  • Есть библиотеки для всех основных языков программирования. Node, PHP и Rust были выпущены непосредственно авторами, остальные были разработаны сообществом (можете ликовать, ведь всякие экзотические вещи вроде Elixir и Nim там тоже есть!).
  • Поддержка нескольких языков (считать слишком долго, но, думаю, на момент написания статьи поддерживалось около 40-50 языков).
  • Сюрприз! Вы даже сможете использовать новые языки, программа все равно будет работать, хотя вы и потеряете некоторые продвинутые функции, например, стоп-слова.
  • Очень быстрая система. Если вы проверите их страницу на GitHub, то увидите, что в некоторых случаях время приема и поиска составляла какие-то микросекунды! Само собой, этот тест проводился на одном компьютере, так как задержка в сети никогда не позволит выдать такие маленькие цифры.

Если вы хотите увидеть эту систему в действии, перейдите по этой ссылке (это одна из их компаний-пользователей) и поэкспериментируйте с поисковой строкой, которая там есть:

 📷
📷

У Sonic, как и у любой поисковой системы, есть определенные ограничения. Разработчики ничего не утаили, а, наоборот, продемонстрировали и рассказали о них на своей странице GitHub. Мой вам совет: изучите этот список и убедитесь, что они никак вам не мешают. У всего есть свои ограничения. Просто в данном случае они скрыты от наших глаз, и поэтому мы не осознаем их до тех пор, пока не станет слишком поздно. Так что, я считаю, что, если вы выбираете поисковую систему, Sonic – это отличный вариант

6. TNTSearch

А теперь мы переходим к одному любопытному пункту в нашем списке. Первый интересный факт: эта полнофункциональная и готовая к использованию в рабочей среде поисковая система была написана на PHP!

Ага, из всех возможных языков выбрали именно PHP. И я так говорю не потому, что ненавижу PHP, а потому, что это не очень долговечно с точки зрения проектного решения.

 📷
📷

Второй интересный факт: их лицензия (во всяком случае та, что была на момент написания статьи). Собственно говоря, это лицензия MIT, так что здесь никаких проблем не будет. Однако авторы классифицируют это программное обеспечение как проект PS4Ware, так что если вы используете TNTSearch в рабочей среде, вы обязательно должны отправить им игру для PS4! Конечно, это не обязательно, как на то указывает слово «должны», но это забавно. Кроме того, я надеюсь, что они обновят ее до лицензии PS5, хотя сейчас еще слишком рано об этом думать.

Так или иначе, я высоко ценю труд этих ребят, так как сам не понаслышке знаю, что такое PHP и Laravel. На их веб-сайте не так много информации, но, судя по всему, там указано, что они предоставляют консультации, так что я настоятельно рекомендую обратиться к ним, если у вас есть какие-то проекты!

Хорошо, а есть ли какие-то веские причины использовать TNTSearch в своих проектах?

Конечно есть:

  • Написана на PHP и для PHP. Экосистема PHP нуждается в более специализированных и высококачественных решениях, как это.
  • Необходимые функции, такие как нечеткие поиск, поиск по местоположению и классификация текстов.
  • Легко поменять поисковый индекс, что обеспечивает хорошую гибкость, которая отсутствует во многих других решениях.
  • Морфологический поиск, алгоритм ранжирования BM25 и пользовательская токенизация обеспечивают высокий уровень точности.
  • Упрощенное развертывание – как и у любого другого пакета из Composer!

Здесь вы можете проверить, как функционирует программа, и увидеть своими глазами, насколько быстро и точно она работает. Подчеркну еще раз: если вы сопровождаете проект PHP, то это значит, что вы намерены оставаться в стенах PHP так долго, насколько это возможно (только зачем? Подумайте о том, сколько вы потратите на переобучение). Для таких случаев у TNTSearch есть ценное предложение, от которого сложно отказаться!

7. Vespa

Vespa – это довольно большая и тяжелая программа. Как и несколько предыдущих решений, оно слишком большое, чтобы его можно было описать в двух словах. Но я должен попробовать, и я это сделаю. Без сомнений Vespa – это поисковая система, но, если вы будете использовать ее как обычную поисковую систему, вы растратите весь ее потенциал зря.

Vespa была создана для того, чтобы обрабатывать бесконечно большие объемы данных (большие данные). Кроме того, она предоставляет функции машинного обучения и бесконечные возможности настройки.

 📷
📷

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

 📷
📷

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

А теперь, если мы возьмем в расчет тот факт, что вы постоянно генерируете огромные объемы данных и хотите улучшить системы принятия решений с помощью искусственного интеллекта и машинного обучения (а именно так большинство SaaS-компаний описывают себя), то вот вам несколько причин, почему нужно выбрать Vespa:

  • Открытый исходный код. Никаких загадочных лицензий и контрактов-ловушек. И ненужно ничего платить, хотя я всегда подчеркиваю тот факт, что компании регулярно платят за проекты, которые они чаще всего использую (даже 50$ в месяц могут серьезно им помочь).
  • Режим реального времени. Vespa действительно работает в режиме реального времени. Она не просто способна понимать, обрабатывать и искать данные по мере их поступления, но она также позволяет менять свою конфигурацию прямо на лету.
  • Масштабируемость и устойчивость. Vespa легко поддается масштабированию. Кроме того, она хорошо реагирует на внезапное исчезновение узлов, обеспечивая, таким образом, высокий уровень надежности.
  • Ранжирование и рекомендации. Вы можете объединить функции поиска, ранжирования и рекомендаций Vespa со структурированными запросами, чтобы получить действительно точные результаты.
  • Искусственный интеллект и машинное обучение бед труда. Vespa содержит высококачественные предварительно обученные модели машинного обучения. Вам не нужно нанимать 20 специалистов по обработке данных, чтобы очистить и использовать ваших данные.
  • Пользовательские плагины. Vespa имеет полный набор API, которые помогают разработчикам создавать собственные плагины Java для необходимого изменения принципа работы системы.

Без сомнения, Vespa – это крупномасштабная программа, так что она подходят лишь для тех команд, которые немного выходят за рамки начального уровня – будь то размер команды, ее техническое мастерство, бюджет, выделенный на инфраструктуру, объемы ежедневно обрабатываемых данных и т.д. Для данного сегмента Vespa – это отличный выбор, который я очень рекомендую.

Заключение

Поиск – это мощный, но при этом какой-то волшебный инструмент, и он окружает нас везде!

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