Может ли Manticore работать без MySQL?

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

Хотя большинство пользователей используют базу данных MySQL (или ее варианты, такие как MariaDB/Percona Server), и Sphinx был нацелен на пользователей MySQL - как плагин для БД (SphinxSE) был реализован, а также один из протоколов запросов основан на mysql, программное обеспечение не является специализированным решением для MySQL, а представляет собой универсальный инструмент для поиска.

Для компиляции Sphinx и Manticore не требуется (и никогда не требовалось) наличие какой-либо библиотеки MySQL. Клиентская библиотека mysql требуется только для драйвера mysql индексатора. Однако даже без этого вы все равно можете индексировать данные из базы данных MySQL, используя ODBC драйвер. Протокол MySQL для SphinxQL реализован в нативном виде и не требует заголовков или библиотек MySQL.

Индексация

Manticore реализует несколько драйверов, которые могут получать данные из базы данных. Специфические драйверы базы данных доступны для MySQL, MSSQL и PostgreSQL, также доступна поддержка ODBC. Драйверы MySQL и PostgreSQL требуют соответствующих клиентских библиотек. Драйвер MSSQL требует клиентской библиотеки ODBC. Однако Manticore может быть собран без поддержки некоторых из этих драйверов или вообще без поддержки любых из них.

Помимо драйверов баз данных, также доступны более общие драйверы источников данных через XML pipe и драйверы CSV/TSV. С их помощью данные могут быть получены из нереляционного хранилища, такого как NoSQL, или просто из обычных файлов. Драйвер XML требует, чтобы XML файл(ы) имели определенный формат. В случае CSV/TSV единственное требование - чтобы первый столбец был идентификатором документа. В случае этих драйверов Manticore не требует полного пути к файлу, а выполняет файл и ожидает, что ответ будет в формате XML/CSV/TSV. Это можно использовать для обработки нескольких файлов или целых папок, содержащих файлы.

Поиск

Первой реализованной API была SphinxAPI, пользовательский бинарный протокол, для которого клиентские библиотеки были официально разработаны на нескольких языках программирования, и сторонние разработчики также портили клиентские библиотеки на других языках. Хотя у него нет всех функций, протокол SphinxAPI предлагает полную реализацию для поиска. Проблема с протоколом SphinxAPI (который также используется внутри распределенных индексов) заключается в том, чтобы поддерживать клиентские библиотеки в актуальном состоянии. Протокол SphinxQL стал более популярным, так как большинство пользователей были готовы использовать клиент/коннектор mysql и не требовали никакого обслуживания между обновлениями демонов - в отличие от SphinxAPI, который требует поддержания актуальности, особенно для доступа к новым реализованным функциям. Клиент SphinxAPI был официально реализован на нескольких популярных языках, таких как PHP, Python, Java и Ruby, но существуют сторонние порты для других языков.

Начиная с Sphinx 2.3, был добавлен HTTP протокол, но он работал только как прокси для запросов в формате sql или SphinxAPI. Это было улучшено в Manticore с новыми конечными точками, которые используют JSON для обоих полезных нагрузок запросов и ответов. Поскольку это работает как обычный веб-сервис, ответы могут быть проксированы или кэшированы с помощью обратного прокси-сервера (например, nginx). В настоящее время JSON API предлагает пути для поиска, манипуляции данными и перколяции с большим количеством команд, которые будут реализованы в будущем.

Установить Manticore Search

Установить Manticore Search