То, что вы хотите называется кластеризацией. Есть много разных статей про методы кластеризации — погуглите. Я как-то делал нечто похожее на основе байесовской теоремы, но для этого надо вручную выделить категории документов и обучить фильтр на какой-то выборке — работало неплохо.
В использовании soundex что-то я особого смысла не вижу, вы же не слова похожие ищите, а тексты. Можно считать crc32 от слов — точность не сильно снижает, а расчеты ускоряются очень хорошо.