Я пытаюсь работать в мобильном приложении Android, где у меня есть функция поиска матчей в зависимости от интереса и местоположения. Многие приложения для знакомств уже выполняют какую-то функциональность, например, матчи Tinder, основанные на местах, полу и возрасте и т.д.
Я не хочу изобретать велосипед, если это уже сделано. Я искал в google, а некоторые предложили использовать алгоритм кластеризации для этого Алгоритм кластеризации людей со схожими интересами Алгоритм сходства пользователей
Позволяет мне иметь данные в этом формате JSON для пользователей
User1: {location: "Delhi, India", interests: ["Jogging", "Travelling", "Praying"] }
User2: {location: "Noida, India", interests: ["Running", "Eating", "Praying"] }
User3: {location: "Bangalore, India", interests: ["Exercise", "Visiting new places", "Chanting"] }
Я пишу соответствующий алгоритм, который соответствует нескольким ниже критериям -
-
Если пользователь1 заинтересован в "Jogging", а другой пользователь2 заинтересован в "Беге", так как бег и бег - это альтернатива своего рода упражнению, поэтому они должны соответствовать обоим профилям, а также быть местным, а также как можно ближе к началу.
-
Алгоритм, выполняющийся в масштабе, должен быть достаточно результативным. Это означает, что я хотел бы избежать сравнения каждого пользователя отдельно друг с другом. Для N пользователей это операция O (N ^ 2). В идеале я хотел бы разработать какой-то "счет", который я могу создать для каждого пользователя отдельно, поскольку это включает в себя цикл через всех пользователей только один раз. Затем я могу найти других пользователей со сходными баллами и определить наилучшее соответствие, основанное на этом.
Может кто-нибудь предложить мне с некоторой реализацией, как я могу достичь этого с помощью firebase-cloud-function
и firebase-database
.