Хотя большинство пользователей используют базу данных MySQL (или её варианты, такие как MariaDB/Percona Server) и Sphinx был ориентирован на пользователей MySQL — был реализован плагин базы данных (SphinxSE) и один из протоколов запросов основан на MySQL, программное обеспечение не является специализированным решением для MySQL, а представляет собой универсальный поисковый инструмент.
Хотя большинство пользователей работают с базой данных MySQL (или ее вариантами, такими как MariaDB/Percona Server), а Sphinx был ориентирован на пользователей MySQL — был реализован плагин для БД (SphinxSE ), и один из протоколов запросов основан на MySQL, — это ПО не является специализированным решением для MySQL, а представляет собой поисковый инструмент общего назначения.
Для компиляции Sphinx и Manticore не требуется (и никогда не требовалась) какая-либо библиотека MySQL. mysql lib client нужен только для 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-файл. Это можно использовать для обработки нескольких файлов или целых папок, содержащих файлы.
Searching
Первой реализованной API была SphinxAPI — пользовательский бинарный протокол, для которого официально были разработаны клиентские библиотеки на нескольких языках программирования, а сторонними разработчиками они также были портированы на другие языки. Хотя у него нет всех возможностей, протокол SphinxAPI предоставляет полную реализацию поиска. Проблема с протоколом SphinxAPI (который также используется внутри распределённых индексов) заключается в необходимости поддерживать клиентские библиотеки в актуальном состоянии. Протокол SphinxQL стал более популярным, поскольку большинству пользователей было удобно использовать клиент/коннектор MySQL и не требовалось обслуживать его при обновлениях демона, в отличие от SphinxAPI, который требовал постоянных обновлений, особенно для доступа к новым реализованным функциям. Клиент SphinxAPI был официально реализован на нескольких популярных языках, таких как PHP, Python, Java и Ruby, но существуют сторонние порты для других языков.
Начиная с версии Sphinx 2.3 был добавлен HTTP-протокол, но он работал лишь как прокси для поисков в формате sql или SphinxAPI. В Manticore это было улучшено новыми конечными точками, использующими JSON как для запросов, так и для ответов. Поскольку он функционирует как обычный веб-сервис, ответы могут проксироваться или кэшироваться обратным прокси-сервером (например, nginx). В настоящее время JSON-API предоставляет пути для поиска, манипуляций с данными и перколации, а в будущем планируется добавить больше команд.
Начиная со Sphinx 2.3 был добавлен HTTP-протокол, но он работал только как прокси для поиска в формате sql или SphinxAPI. В Manticore это было улучшено: появились новые конечные точки, использующие JSON и для тел запросов, и для ответов. Поскольку это работает как обычный веб-сервис, ответы можно проксировать или кэшировать с помощью обратного прокси-сервера (например, nginx). Сейчас JSON API предоставляет пути для поиска, изменения данных и перколяции; в будущем будут добавлены новые команды.
