Хотя большинство пользователей используют базу данных MySQL (или её варианты, такие как MariaDB/Percona Server) и Sphinx был ориентирован на пользователей MySQL — был реализован плагин базы данных (SphinxSE) и один из протоколов запросов основан на MySQL, программное обеспечение не является специализированным решением для MySQL, а представляет собой универсальный поисковый инструмент.
Для компиляции Sphinx и Manticore нет необходимости (и никогда её не было) в какой-либо библиотеке MySQL. Клиентская библиотека mysql требуется только для mysql‑драйвера индексатора. Тем не менее, даже без неё можно индексировать данные из базы MySQL, используя драйвер ODBC. Протокол MySQL для SphinxQL реализован нативно и не требует заголовочных файлов или библиотек MySQL.
Indexing
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 предоставляет пути для поиска, манипуляций с данными и перколации, а в будущем планируется добавить больше команд.
Starting with Sphinx 2.3 HTTP protocol was added, but it only worked as a proxy for searches in sql or SphinxAPI format. This was improved in Manticore with new endpoints that use JSON for both payloads of requests and responses. As it works like a regular web service, responses can be proxied or cached with a reverse proxy server (like nginx for example). Currently the JSON API offer paths for searching, data manipulation and percolation with more commands to be implemented in future.