Не знаю есть ли фукнционал частых запросов в модуле поиска (там есть функционал подсказок кстати - b_search_suggest, это очень близко, и там вроде есть рейт подсказки), но там есть история запросов в b_search_phrase;
Поэтому если бы передо мной встала такая задача - я бы не стал разбираться. Запилил бы компонент который выбирает всю таблицу и подсчитывает "одинаковые" запросы.
Что считать одинаковыми - самое простое - делать для каждого запроса hash: привести все слова к нижнему регистру, упорядочить их по алфавиту, удалить все символы кроме цифр и согласных букв - все запросы с одинаковым хэшем считал бы одним и тем же запросом и инкрементил бы его. Для каждого запроса сохраняем список его форм и инкрементим и их тоже - самые частые формы - считаем основной формой.
Т.е. запросы:
зимняя шапка
зимние шапки
шапки зимние
Зимняя шапка
Получат один хэш - "змншпк" и будут подсчитаны как один запрос 4 раза, основной формой станет "зимняя шапка"
Дальше сортируем этот список и сохраняем в кэше. Все.