#mysql #sphinx
#mysql #sphinx
Вопрос:
У меня есть сайт, который использует сложный запрос Sphinx, основанный на сложной конфигурации Sphinx. Мы очищаем базу данных каждый день и заново запускаем всю конфигурацию Sphinx, что занимает часы. Проблема в том, что записи, которые были удалены из базы данных, все еще находятся в индексе Sphinx за этот период времени. Есть ли в любом случае возможность, чтобы запрос Sphinx каким-либо образом запрашивал Mysql, чтобы исключить удаленные идентификаторы?
Ответ №1:
Если вы можете подготовить запрос, который вернет идентификаторы, которые нужно исключить из MySQL, тогда вы можете использовать sql_query_killlist в другом индексе и объединить основной с новым через распределенный индекс, а затем, когда вы сделаете запрос, он подавит все идентификаторы, возвращенные запросом в sql_query_killlist. Прочитайте о схеме ‘main delta’ и списках исключений в руководстве Sphinx, чтобы узнать больше об этом.