задача сортировать юзеров по количеству совпадений интересов
для юзера Миша, остортировать остальных юзеров по количеству совпадающих интересов
это возможно решить силами постгресс нормально или лучше взять что то другое?
" количеству совпадений интересов" - интересы всех юзеров со всеми юзерами? Т.е. надо сравнивать каждый с каждым? Обычно SQL такого не любит и запросы такие выполняются достаточно долго и требуют много памяти. Но сделать реально.
так и есть да, я реализовал это уже, но думаю что если юзеров будет более 100к то начнуться проблемы и партицирование тут вряд ли поможет(( в постгресс 9 существовал экстеншн для такого ордеринга, но как я понял он не поддерживается и его особо нигде уже и нет потому вот такой вопрос задаю) эластик лучше попробовать?
По сути задача сводится к созданию уникальных ХЭШей групп (уникальных наборов интересов) и определение пользователей в эти группы, затем просто сортируешь по группе с самым большим количеством интересов или пользователей в группе.
не совсем понятно на самом деле юзер 1 - интересы 1, 12, 24 юзер 2 - интересы 1 юзера 3 - интересы 1, 24 хеши будут разные, группа одна как по этим хешам будет проводится сравнивание того что выше в поиске?
так и есть да, я реализовал это уже, но думаю что если юзеров будет более 100к то начнуться проблемы и партицирование тут вряд ли поможет((
Тогда начни группировать не от пользователя от от группы. Просто посчитай сколько пользователей в каждой группе. Отсортируй группы по количеству пользователей.
значит вам надо сохранять эту информацию в отдельную таблицу при изменении пользователя, а не вычислять на лету
всех для всех?
по которой можно будет сделать нужный вам order by по индексу
Обсуждают сегодня