Ну, это зависит от того, как работают разные режимы поиска, но в целом я бы сказал, что будет работать таблица с 3 столбцами:
SearchType SearchValue Count
Всякий раз, когда кто-то выполняет поиск, скажем, что он ищет «Название компании: Initech», первый запрос, чтобы увидеть, есть ли какие-либо строки в таблице с SearchType = «Название компании» (или любое значение enum / id, которое вы дали этот тип поиска) и SearchValue = "Initech". Если для этого уже есть строка, обновите ее, увеличив столбец Count. Если для этого поиска еще нет строки, вставьте новую строку с числом 1.
Делая это, вы получите достаточную гибкость для последующих запросов. Вы можете выяснить, какие наиболее популярные запросы для каждого типа:
... ORDER BY Count DESC WHERE SearchType = 'Some Search Type'
Вы можете определить наиболее популярные типы поиска:
... GROUP BY SearchType ORDER BY SUM(Count) DESC
1012 * Etc. *