Я бы добавил дополнительное поле для каждой статьи, которое будет содержать «версию таблицы ключевых слов», которая использовалась для обработки этой статьи.
Каждый раз, когда пользователь открывает статью, вы должны сравнивать эту версию с версией.списка ключевых слов.Если он устарел, вы обрабатываете статью и сохраняете результаты в таблице статей.В противном случае вы просто показываете статью.
Вы можете контролировать загрузку, добавив столбец даты для обработки, а также проверить его.Если элемент относительно свежий, вы можете отложить обработку.Опять же, вы можете сравнить разницу версий, например, если она больше 5 или 10, вам следует обновить статью.Если у вас добавлено важное ключевое слово, просто увеличьте версию таблицы ключевых слов на 10, и все ваши статьи будут обновлены.
Основная идея заключается в распределении нагрузки по запросам пользователей и кэшировании результатов.
Если ваша система сильно загружена, вы можете использовать генератор случайных чисел, чтобы определить, что, например, обновлять статью следует только с 10% вероятностью.