I think it would be cleaner if you just move fit_label_estimator() and predict_label_list() in DocIndexUpdater. Basically all the code updating the index should be in DocIndexUpdater instead of DocSearch. (In a perfect world, there shouldn't even be any dependency between them I think)