android - Android 移动应用程序的基于兴趣和位置的算法

标签 android algorithm firebase match cluster-analysis

我正在尝试开发 Android 移动应用程序,其中我具有根据兴趣和位置查找匹配项的功能。许多约会应用程序已经在做一些类似的功能,例如基于位置、性别和年龄等的 Tinder 匹配。

如果已经完成,我不想重新发明轮子。我在谷歌上搜索过,有人建议为此使用聚类算法 Algorithm for clustering people with similar interests User similarities algorithm

让我为用户提供这种 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. 如果用户 1 对“慢跑”感兴趣,而另一个用户 2 对“运行”感兴趣,那么慢跑和运行是一种交替的锻炼方式,因此他们应该同时匹配这两种配置文件位置也很明智,因为最近的应该在最上面。

  2. 该算法在大规模运行时应该具有相当的性能。这意味着我想避免将每个用户单独与其他用户进行比较。对于 N 个用户,这是一个 O(N^2) 操作。理想情况下,我想开发某种可以单独为每个用户生成的“分数”,因为这涉及仅循环遍历所有用户一次。然后我可以找到具有相似分数的其他用户,并基于此确定最佳匹配。

任何人都可以建议我如何在 firebase-cloud-functionfirebase-database 的帮助下实现这一目标。

最佳答案

我认为硬编码相似性是一种错误的方法。仅供引用,主要搜索引擎都不依赖此类映射。

更好的方法是更多地由数据驱动。创建一个特别的方法开始,一旦你有足够的数据构建机器学习模型来排名匹配。这样您就不必承担任何事情。

对于位置,有某种半径(最好这可以由用户设置)并匹配半径内的人。

关于android - Android 移动应用程序的基于兴趣和位置的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573630/

相关文章:

ios - Google SDK 在 Xcode 中记录两次

android - 谷歌地图无法在普通设备上加载,但会在测试设备(真实设备)上加载

java - 如何在 Android 应用程序上使用 JSON 解析的 Activity 之间传递字符串?

android - 如何在 Kotlin 中创建一个打开新 Activity (Android Studio)的按钮?

c# - 在不使用临时变量的情况下交换两个变量

algorithm - 为具有首选项的节点创建组

android - 更新后React-Native AsyncStorage状态丢失

algorithm - 提交后 Geeksforgeeks 将我的代码显示为运行时错误

firebase - 添加三元或 if 运算符来检测 Flutter StreamBuilder 中输出文本中的条件?

android - Firestore API 之前未在项目 416788152002 中使用过或已被禁用