Упоминание пользователя / система кеширования тегов
Я пытаюсь реализовать классику user mention
функциональность в нашей системе (например, набор текста @s
немедленно покажет всем лицам, чье имя начинается с s
).
Основная проблема заключается в том, что будет большое количество пользователей, которые будут потенциальным результатом поиска, а сама функциональность должна быть максимально быстрой. Из-за этого я cache
результаты, но я не уверен, что это самый эффективный способ сделать это.
Что именно должно быть key
каждого cache
результат? Потому что каждый пользователь будет иметь разные результаты для одного и того же текста поиска на основе его permissions
(внутри определенной группы, глобально или что-то еще). Другая проблема связана с дублированием между пользователями, которые ищут одно и то же ключевое слово (хотя я думаю, что это нормально из-за требований к разрешению), а также, например, одним и тем же пользователем, который ищет @s
, @st
, @ste
- все это будет иметь cached
пользователь Steven
(и, возможно, многие другие), которые могут вызвать много дубликатов в кеше.
Существуют ли какие-либо темы, алгоритмы, блоги или что-нибудь, что может помочь мне с этой проблемой?