Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 匹配用户算法_Javascript_Node.js_Algorithm_Match_Matching - Fatal编程技术网

Javascript 匹配用户算法

Javascript 匹配用户算法,javascript,node.js,algorithm,match,matching,Javascript,Node.js,Algorithm,Match,Matching,我正在尝试为我的网站创建一个匹配算法 说明: 匹配本身应该是通过填写一些问题的答案,并与回答匹配答案的人进行匹配。 *有些答案可能不止一个。 *如果用户要求,可以与多人匹配 例如: 你喜欢的音乐类型(最多3种)?回答:岩石,金属 您所说的语言(最多3种)?回答:英语,西班牙语和汉语 您喜欢人物中的功能(最多2个)?回答:又高又瘦 答案来自一个答案库(下拉列表),用户无法写出他想要的内容 在我上面给出的例子中,该用户的一些良好匹配示例如下: 1. genre - Rock | langua

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

说明

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

例如: 你喜欢的音乐类型(最多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]
            }
        }
    }
for(int i=0;i
这种方法感觉有点难看,而且需要很多嵌套循环, 将来如果我想添加问题,这只会给循环添加越来越多的嵌套

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

我应该如何处理这个问题/算法

谢谢

编辑

因为不够清楚,所以要澄清

选择“高”和“瘦”答案的用户应与另外两个标记为“高”的人或另外两个标记为“胖”的人或另外两个同时标记为“胖”和“高”的人匹配(其他问题相同)

所以在这种情况下(只有这个问题),我需要3个列表,我最终得到的2个人只能来自其中一个列表


问题是,我不想做太多的查询来获取大量列表,尤其是当用户的匹配最终只来自其中一个列表时。

我删除了我的帖子,因为它无法在heapoverflow回复您的帖子(我不确定是否能够提供满意的答案)。你应该展示你提供的例子来澄清你想要得到的匹配。我删除了我的帖子,因为它没有回答你的帖子@heapoverflow(我不确定能否提供一个满意的答案)。您应该展示您提供的示例,以澄清您想要获得的匹配