Хотя его можно настроить для автоматического общения с MySQL, Sphinx действительно является отдельным инструментом для MyISAM или InnoDB. Он предлагает гораздо лучшую обработку и производительность, чем упрощенный полнотекстовый поиск в MyISAM, но, конечно, цена заключается в том, что запрос с условиями, основанными как на поиске, так и на базе данных одновременно, становится трудным. Вы можете сделать это, используя SphinxSE (механизм хранения), чтобы запрашивать и присоединяться через MySQL, но это не так гибко, как хранение в ядре базы данных, и объединения не будут работать хорошо.
В противном случае вы можете использовать гибридный подход с MyISAM и InnoDB. Поместите все свои канонические данные в соответствующие таблицы InnoDB и просто используйте MyISAM для хранения полнотекстовой поисковой приманки. Для нормальной работы вы просто касаетесь содержимого InnoDB; только когда вы выполняете полнотекстовый поиск, вам нужно присоединиться к таблицам MyISAM. Затем вам необходимо убедиться, что вы обновляете таблицы MyISAM из любого нового текста, вставленного в таблицы InnoDB после успешной транзакции.
Несмотря на то, что отсутствие поддержки транзакций в MyISAM рискует иногда сделать данные несовместимыми в условиях одновременности или ошибки (опасность, которая, очевидно, также относится к отдельному решению для хранения полнотекстового хранилища, такому как Sphinx, Lucene и др.), В действительности это не является большой проблемой. поскольку только поисковая приманка становится противоречивой, а не ваши фактические данные. Вы также можете воспользоваться возможностью по-другому обработать ваш полнотекстовый контент, например, применив тривиальное основание, поскольку MySQL не реализует это сам.
PostgreSQL имеет свой собственный встроенный полнотекстовый материал, основанный на операторе @@
. Это не совсем зависит от скорости Sphinx, но намного опережает MyISAM FULLTEXT в функциях (например, стволовые, словари, лучшая обработка значений релевантности), и вы все равно можете свободно комбинировать его с другими условиями запроса.