Если вы используете полнотекстовые индексы, я бы сделал что-то подобное
таблица 1 - страница
pageid
name
date
category
... etc etc other page meta data here
Таблица 2 - page_fulltext
pageid
page_title_fulltext
page_body_fulltext
возьмите для примера
у страницы 1 есть page_body_fulltext "быстрые скачки коричневой лисы ленивого пса"
на странице 2 есть page_body_fulltext "быстрые рыжие лисицы прыгают ленивого коричневого пса"
выполняя полнотекстовый поиск, вы можете найти отдельные слова тега, а также найти точные строки
то есть вы можете найти ключевые слова "быстрый" или "коричневый" или "лиса"
Но если кто-то ищет "быструю коричневую лису", вы можете сделать это тоже.
в вашем примере вы, вероятно, искали бы все 3 слова и возвращали обе страницы, что было бы неправильно.
также mysql отлично справляется с обработкой полнотекстового поиска, и вы предлагаете, в основном, аналогичную версию того, что mysql мог бы делать очень хорошо самостоятельно
так что в 2 экземпляре вы обрисовали в общих чертах выше
А) скорость поиска была бы великолепна, поскольку MySQL делает это очень хорошо
Б) мой путь намного быстрее, так как вам не нужно проверять наличие каждого ключевого слова, которое вы вставляете. Просто выполните стандартное обновление / вставку и позвольте mysql справиться с трудностями поиска текста для вас.
моя компания использует метод, который я описал, и он работает очень хорошо ...
также у меня есть текст страницы и заголовок страницы в отдельных полнотекстовых столбцах, вы получаете дополнительный бонус за возможность оценивать страницы с заголовками, содержащими ваши ключевые слова выше, чем страницы с основным текстом, содержащим те же ключевые слова.