Лучший способ создать систему «хэштегов»

Это возможная проблема, потому что я потерял больше времени, чтобы подумать, как сделать правильно, думая наиболее оптимизированным способом.

У меня есть таблица «Содержание», и мне нужно добавить опцию, чтобы связать несколько «хэштегов», «тегов» или «ключевых слов» с содержимым, например, такое содержимое, как «жареный картофель с кетчупом», имеет отметку « ключи »:« картофель »,« кетчуп »и« жареный ».

И когда я выполняю поиск по слову, например «картофель», мне нужно показать содержимое, в котором есть теги этого слова.

Вопрос в том, какая структура лучше всего подходит для этого, учитывая скорость получения результатов, потому что таблица содержимого является MyISAM с более чем 30 миллионами строк.

Я думаю так:

Создайте еще 2 таблицы, «contents_hashtags» (id (INT11), content_id (INT11), hashtag_id (INT11)) и «hashtags» (id (INT11), хэштег (VARCHAR (40))) 2 таблицы в InnoDB

Когда пользователь создает / изменяет содержимое таблицы, я ищу в таблице хэштегов и получаю идентификаторы, если хэштег не t существует, создайте его в хэштеге таблицы, если существует, получите идентификатор, используя эти идентификаторы, создайте вставки в таблице content_hashtas, связывая содержимое <-contents_hashtas-> hashtahs

В поиске сделайте JOINS (LEFT / RIGHT / ВНУТРЕННИЙ чувак ..) и сделай поиск по LIKE ?? точным (hashtag = "XXX") или ПОЛНЫМ ТЕКСТОВЫМ ПОИСКОМ?

Этот метод правильный / быстрый? Я не знаю, как запустить это с большим количеством строк и большим трафиком ..

8
задан DrColossos 14 February 2012 в 18:21
поделиться