В нашем приложении мы собираемся ввести тегирование для различных объектов. Я прочитал о возможных решениях и нашел эту серию сообщений в блоге:
Исходя из этого, я собираюсь ввести полнотекстовое индексирование для наших столбцов "тегов". Пока все хорошо (зная пределы полнотекстового индекса, такого как стоп-слова, разделители токенизации и т. Д. c).
Однако нам нужно иметь возможность перечислять существующие теги в некоторых случаях, и мы требуем, чтобы теги, определенные разными пользователями, скрыты друг от друга (в основном, если «пользователь A» определяет тег «закрытый», тогда «пользователь B» не должен его видеть).
Однако я нашел возможное решение, которое, похоже, работает Я не убежден. Вот что я сейчас делаю:
SET GLOBAL innodb_ft_aux_table=''
с именем таблицы - run
SELECT DISTINCT WORD tag, COUNT(1) cnt FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE WHERE DOCID IN (?,?) GROUP BY tag ORDER BY cnt DESC
(список DOCID
предварительно фильтруется с разрешениями пользователя - набор результатов ожидается, что он будет меньше нескольких тысяч записей, в основном ниже 100)
Я также могу расширить часть WHERE
выбора для фильтрации списка результатов (для целей автозаполнения). Но , так как этот подход использует глобальную переменную, его нельзя использовать в параллельной среде. Я могу применить какую-то синхронизацию, но я должен вообще использовать эту таблицу ? Кроме того, поскольку эта таблица относится к категории «мониторинг» в документации mysql, я не уверен, что это правильный вариант использования. Если нет, какие еще решения у меня есть с полнотекстовым индексом?