匹配用户算法

问题描述 投票:1回答:1

我正在尝试为我的网站创建匹配算法。

说明

匹配本身应该是通过填写问题的一些答案,然后与回答匹配答案的人进行匹配。*有些答案可能超过1个答案。*如果用户要求,则可以与多个人匹配。

例如:您喜欢的音乐类型(最多3个)?答案:岩石,金属您说的语言(最多3种)?答案:英文,西班牙文中文您喜欢的功能(最多2个)?回答:瘦高]]

答案来自答案池(下拉列表,用户无法写出他想要的内容。

如果我在上面给出了与此用户匹配的一些示例,则为:

    1. genre - Rock | language - english | features - Tall
    2. genre - Rock,Metal | language - spanish | features - Skinny
    3. genre - Metal | language - chinese | features - Skinny,Tall

原理是,每个问题至少应匹配一件事。

问题

因此,我正在努力创建一个与其他用户匹配的算法。

我考虑过将每个条目(搜索数据)放在数据库中的表中,然后查询与用户数据匹配的所有人员的单独列表。

因此,在这种情况下,要获取我需要的所有列表,需要12个查询才能获取12个列表:

    SELECT * from table WHERE genre="Rock" And language="English" And feature="Tall"
    SELECT * from table WHERE genre="Rock" And language="Spanish" And feature="Tall"
    SELECT * from table WHERE genre="Rock" And language="Chinese" And feature="Tall"
    SELECT * from table WHERE genre="Metal" And language="English" And feature="Tall"
    SELECT * from table WHERE genre="Metal" And language="Spanish" And feature="Tall"
    SELECT * from table WHERE genre="Metal" And language="Chinese" And feature="Tall"
    SELECT * from table WHERE genre="Rock" And language="English" And feature="Skinny"
    ..
    ..

也我

想要混合列表,因为我可能想联系3个人而不是2个人,然后我不想要混合语言或其他喜欢的东西。

所以在代码中将是这样的:

    for(int i = 0; i < genres.length; i++) {
        for(int j = 0; j < languages.length; j++) {
            for(int k = 0; k < genres.length; k++) {
                list = SELECT * from table WHERE genre=genres[i] And language=languages[j] And feature=features[k]
            }
        }
    }

这种方法有点难看,而且还需要很多嵌套循环,将来如果我要添加问题,这只会在循环中添加越来越多的嵌套。

不说插入每个条目也会有问题,因为每个用户都有数组对于每个问题,因此表中的每一行将只需要包含数组中的元素之一,这意味着每个用户在数据库表中将有几行。

我应该如何解决这个问题/算法?

谢谢。

我正在尝试为我的网站创建匹配算法。说明:匹配本身应该是通过填写问题的一些答案,然后与回答匹配的人进行匹配...

javascript node.js algorithm match matching
1个回答
0
投票

让我们看一下两种可能性(还有更多可能性)

© www.soinside.com 2019 - 2024. All rights reserved.