Думаю сделать следующим образом:
Берем текст, делим на шинглы длиной 1-2-3-4-5 внахлест, убираем дубликаты.
Далее каждый шингл проверям на наличие в БД. Если данного шингла нет, то добавляем в БД и увеличиваем кол-во упоминаний на 1. Если шингл присутствует, то просто увеличиваем кол-во. И так каждый текст. В итоге получаем нужный набор шинглов и сортируем.