То, что я сделал в своем адаптере Ruby Sphinx, Thinking Sphinx, состоит в том, чтобы отслеживать, когда записи удаляются, и обновлять логический атрибут для записей в главном индексе (я называю это sphinx_deleted
). Затем, всякий раз, когда я ищу, я фильтрую значения, где sphinx_deleted
равно 0. В конфигурации sql_query у меня есть явный атрибут следующим образом:
SELECT fields, more_fields, 0 as sphinx_deleted FROM table
И, конечно, также есть определение атрибута.
sql_attr_bool = sphinx_deleted
Имейте в виду, что эти обновления атрибутов (с использованием Sphinx API) хранятся только в памяти - базовые индексные файлы не изменяются, поэтому, если вы перезапустите Sphinx, вы потеряете эти знания, если не выполните полное индекс также.
Это небольшая работа, но она обеспечит аккуратный подсчет результатов и нумерацию страниц.