Это, возможно, проблема в том, что я потерял больше времени, чтобы подумать, как поступить правильно, думая наилучшим образом оптимизированным способом.
У меня есть таблица «Содержание», и мне нужно добавить опцию для привязки нескольких «хэштегов», «тегов» или «ключевых слов» к содержимому, например, содержимое типа «жареный картофель с кетчупом» имеет « клавиши ":" картофельные "," кетчуп "и" жареные ".
И когда я выполняю поиск по слову, например, «картофель», мне нужно показать содержимое, содержащее в нем теги этого слова.
Вопрос в том, какая структура лучше всего подходит для этого, учитывая скорость результатов, потому что таблица содержимого - это MyISAM, насчитывающая более 30 миллионов строк.
Я думаю, что в этом:
Создайте еще 2 таблицы: "contents_hashtags" (id(INT11), content_id(INT11), hashtag_id(INT11))
и "hashtags" (id(INT11), hashtag(VARCHAR(40)))
2 таблицы в InnoDB
Когда пользователь создает / изменяет содержимое таблицы, я выполняю поиск в таблице хэштегов и получаю идентификаторы, если хештег не существует, создаю его в хэштеге таблицы, если существует, получаю идентификатор, используя эти идентификаторы создайте вставки в таблице contents_hashtas asociating content <-contents_hashtas-> hashtahs
В поиске сделайте СОЕДИНЕНИЯ (ЧЕЛОВЕК ВПРАВО / ВПРАВО / ВНУТРЕННИЙ ..) и сделайте поиск по LIKE ?? точным (hashtag = "XXX") или ПОЛНЫМ ПОИСКОМ ТЕКСТА?
Является ли этот метод правильным / быстрым? Я не знаю, как запустить это с большим количеством строк и большим трафиком ..