Общие способы парного сопоставления пользователей в базе данных? - PullRequest
0 голосов
/ 03 августа 2020

надеюсь, вы в целости и сохранности! У меня есть вопрос о регулярных или распространенных способах сопоставления пар, если есть база данных пользователей: скажем, есть несколько свойств каждого пользователя, и при сопоставлении каждый пользователь может изменить параметры фильтрации, чтобы соответствовать только тем, которые подходят их собственным требование (поэтому существует взаимный выбор между пользователями), и мы хотим максимально точно сопоставить 1000 пользователей.

Например, предположим, что у каждого пользователя есть 3 свойства: пол (женский / мужской / другой ), уровень обучения (начальный / средний / продвинутый) и класс (первокурсник / второкурсник / младший / старший), и при сопоставлении каждый пользователь мог выбирать только людей с выбранным им полом, уровнем обучения и оценкой. Сосредоточившись на одном пользователе, я мог предположить, что с точки зрения базы данных мы могли бы использовать параметры фильтрации в командах и получить список тех, кто удовлетворяет как «моим требованиям», так и «я соответствую их требованиям»? Однако я думаю, что это будут медленные и асинхронные проблемы, когда в фазе сопоставления одновременно находится более 1000 пользователей? глядя на график. Выполнимы ли они в этом случае? Я предполагаю, что если бы два пользователя взаимно соответствовали обоим требованиям, у них было бы край между двумя узлами, и значение края могло бы быть исчерпывающим соответствием оценок трех свойств вместе?

В любом случае, мне интересно, есть ли распространенный способ точно сопоставить пары, по крайней мере, с более чем 1000 пользователей одновременно?

Большое спасибо!

1 Ответ

0 голосов
/ 03 августа 2020

Если требуется, чтобы каждое совпадение имело одни и те же свойства, решение довольно простое; просто выполните сортировку по нескольким критериям (например, сначала сортируйте по полу, затем в каждой гендерной категории сортируйте по уровню обучения и т. д. c.) и объедините идентичных пользователей.

Однако в случайном наборе данных вы ' re вряд ли найдет идеальные совпадения для всех пользователей. В этом случае вы захотите получить пары баллов по тому, насколько близко каждая категория соответствует, и использовать более сложный алгоритм, чтобы максимизировать общие совпадения. То, что вы будете делать, во многом зависит от вашего варианта использования и размера пользовательской базы. Честно говоря, 1000 пользователей - это очень мало для современных компьютеров; практически любой метод полиномиального времени (включая цветение, как вы упомянули) будет работать нормально.

...