February 16, 2012 ・ Sphinx
SphinxSearch kill list feature
In using the SphinxSearch sql_query_killlist I am faced with a problem - the kill list doesn't always work as expected for several distributed indexes.
I found the cause of this problem in the order of the physical indexes within the distributed index.
Lets say we have a main index which contains the majority of the data and updates once a day. And we have delta index which contains the latest changes and updates every 3 minutes.
In order to ignore the old records in the main index we need to add a kill list into the delta index. The kill list should select the IDs which you want to remove from the delta index.
The problem is that the kill list will take effect only if the delta index is placed after the main index, so in a nutshell the kill list removes all IDs from all preceding indexes.
The correct index definition using a kill list should look like this:
type = distributed
local = main
local = delta