Поиск по сайту Поиск

Использование системы полнотекстового поиска Sphinx

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

Что такое полнотекстовый поиск

Существует несколько типов поиска:

  • Поиск по метаданным — это поиск по определённым атрибутам документа — название документа, дата создания, размер, автор и так далее. С таким поиском многие встречались в ОС Windows.
  • Поиск по изображениям. Поисковая система распознает содержание фотографии (загружена пользователем или добавлен URL изображения) и в результатах поиска пользователь получает похожие изображения (например, поиск по картинкам в Google).
  • Полнотекстовый поиск — это поиск по всему содержимому документа, а не по определённым атрибутам.

Рассмотрим подробнее последний тип. Первые программы полнотекстового поиска сканировали содержимое каждого документа в базе. Это занимало очень много времени и вычислительной мощности. 

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

Поисковик начинает проверку совпадений с первого символа, чтобы сузить область поиска. Затем он добавляет последующие символы и передаёт результаты, сортируя их по точности.

Такая система значительно повышает скорость поиска нужных документов. В то время, как индекс 10 000 документов может быть опрошен в пределах миллисекунд, последовательный просмотр каждого слова в 10 000 больших документов мог бы занять часы.

Что такое Sphinx

Sphinx (SQL Phrase Index) — это система полнотекстового поиска, которая разработана Андреем Аксёновым и впервые выпущена в 2001 году. Изначально Сфинкс была системой с открытым кодом, но начиная с версии Sphinx 3 стала проприетарной — создатели закрыли исходный код.

Sphinx написана на языке C++ и способна интегрироваться в популярные СУБД (например, PostgreSQL или MySQL). Также в ней есть API для популярных языков веб-программирования.

API или Application Programming Interface — это перечень способов, которыми одна программа может взаимодействовать с другой. Он включает в себя действие, которое можно выполнить, входные и выходные данные. Благодаря API код сайта получает массив идентификаторов тех записей, которые нашлись по поисковому запросу. Затем идентификаторы сопоставляются с теми, которые указаны в базе данных сайта. 

В Сфинкс существуют официальные API. Они созданы для следующих языков:

  • PHP,
  • Perl,
  • Ruby,
  • Python,
  • C++,
  • Java.

Также сообщество разработало API для .NET и Elixir.

Какие преимущества есть у Sphinx

Sphinx как поисковая машина имеет следующие преимущества:

  • Высокая скорость индексации. В Sphinx она достигает 10–15 мегабайт в секунду на каждое ядро процессора.
  • Высокая скорость поиска. Когда вы вводите поисковый запрос, Sphinx ищет совпадения с запросом в индексе со скоростью обработки 150–250 запросов в секунду на каждое ядро процессора с 1 000 000 документов.
  • Высокая масштабируемость. Поисковая машина может обрабатывать 50 000 000 запросов в день на кластер с 3 000 000 000 документов.

Sphinx поддерживает:

  • Распределённый поиск. Sphinx позволяет задействовать несколько машин в сети для обработки запроса.
  • Несколько полей полнотекстового поиска в документе. По умолчанию доступно 32 поля.
  • Несколько дополнительных атрибутов для каждого документа, например, string (строка) или timestamp (дата и время в UNIX-формате).
  • Использование стоп-слов на случай, если нужно убрать некоторые слова из поисковой выдачи.
  • Однобайтовые кодировки и распространённая UTF-8
  • Морфологический поиск. Sphinx имеет встроенные модули для английского, русского и чешского языка. Также можно настроить модули для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского и венгерского.
  • ODBC-совместимые базы данных. ODBC (Open Database Connectivity) — это протокол, который разработала компания Microsoft. Он позволяет подключить БД к внешнему источнику данных, например Microsoft Access к SQL Server. Базы данных, которые поддерживают этот функционал, называются ODBC-совместимыми.

Где применяется система полнотекстового поиска Sphinx

Поисковая машина Sphinx используется для создания поиска по сайту или определённой странице. Он встроен в CMS:

  • 1С-Битрикс, 
  • HostCMS,
  • LiveStreet, 
  • Umi.CMS.

Для WordPress и Yii2 можно установить плагин. После этого поиск станет доступным.

На основе кода Sphinx созданы новые ветки ПО, которые называются форками. Так в 2017 году члены первоначальной команды разработки Sphinx разработали форк под названием Manticore.

Manticore — это бесплатная база данных с открытым кодом, которая создана специально для поиска. Это ответвление можно считать полноценным продолжением Sphinx, так как авторы сохранили первоначальные возможности и усовершенствовали их. Вот что добавили в Manticore:

  • пакеты Docker и официальные репозитории YUM и APT,
  • API для Go и JavaScript,
  • интерактивные курсы, в которых описан функционал для пользователей,
  • интеграцию в MySQL/MariaDB FEDERATED engine и ProxySQL,
  • синхронную репликацию. Репликация — это процесс, когда изменения в одной копии объекта синхронизируются с остальными копиями. Когда эта синхронизация происходит за одну транзакцию, репликация называется синхронной.
  • бесплатный анализ кода и прочее.

⌘⌘⌘

Надеемся, что статья оказалась для вас полезной и помогла понять, как работает полнотекстовый поиск в Sphinx.

SEO для бизнеса: поисковики — тоже реклама

Что такое SEO-оптимизация, как она приносит выгоду собственному бизнесу и как ее настроить — в блоге Рег.ру
Read More

Какие показатели нужно отслеживать новому бизнесу? 10 главных метрик

Полный список финансовых показателей, которые нужно учитывать при запуске и развитии бизнеса. С формулами, комментариями и понятными примерами расчета. (далее…)
Read More

Драма Microsoft и Apple: от вражды до сотрудничества

Техногиганты всё время своего существования судились, обменивались колкостями и пытались обогнать друг друга по уровню новаторства в разработках. Наши коллеги...
Read More

Как компании меняли свой бренд из-за испорченной репутации: три кейса

В бизнесе нет страховки от ошибок — любой промах отражается на репутации. И иногда исправить ситуацию может только ребрендинг и...
Read More

Запускаем email-рассылку: как не попасть в спам при отправке писем

В статье рассказываем, почему рассылки попадают в спам, и делимся советами, как сделать так, чтобы письма всегда доставлялись до адресатов....
Read More

Ключ к успешному продвижению: что такое SMM-стратегия и как ее составить

Разберем, что такое SMM-стратегия, зачем она нужна и как эффективно использовать социальные сети для решения бизнес-задач. (далее…)
Read More

Новогодний маркетинг: лучшие приемы праздничной рекламы

Для бизнеса Новый год и Рождество — время всплеска продаж и увеличения прибыли. А способствуют этому всем знакомые персонажи: от...
Read More

Россияне предпочитают .ru вместо .com, а Дональд Трамп проиграл доменный спор за mar-a-lago.com

Рассказываем самые интересные новости доменного мира. (далее…)
Read More

Прокрастинация: что такое, виды и как бороться

Прокрастинатор полон идей и амбиций, но ему часто не хватает самодисциплины и силы воли, чтобы начать действовать. Что заставляет нас...
Read More

Что нужно покупателям в 2024: 5 трендов электронной коммерции

Ежегодно рынок e-commerce в России растет на треть, а в 2024 году, по прогнозам экспертов, его оборот составит более 7,2...
Read More