测试圈相亲平台开发流程(21):匹配算法(下)

185 阅读3分钟

    上节课我们已经搞定了几乎所有架构上的事。只差俩个分值计算函数了。

    但是经过我们仔细一想,赫然发现,俩个函数的算法应该是一模一样的。唯一的区别就是,进来的个人信息和择偶标准 是女方,还是男方而已,也就是对调一下而已。

所以我们这里简化为一个函数,但是传参颠倒的格式:

图片

图片

然后我们来实现这个函数,仍然以鸣人举例。

    这里我们拿到的是鸣人的个人/择偶信息,还有异性的个人/择偶信息。

    因为个人信息目前字段是高于择偶信息的。所以我们要以择偶信息来作为依据。

    而多出来的个人信息字段,则作为额外加分项(以后实现,需要开发统一标准打分功能)。

    函数如下:

图片

分别要用五个want字段来计算分数。

然后把这五个字段分数 分别* 系数 加到一起。目前我并没有更改系数,这个系数要实际的效果来不断调整才行,所以我都默认0.2

研究具体分数计算之前,我们为了确保最后总分在100为满的基础上。所以必须严格控制所有分数的分段结果和精度。(只是大概结果在100以下,特别优秀的肯定是超过100分)

然后就是 要一个一个来研究吧:

第一个分数,身高height:

假如want = 170cm, info=175cm ,那么肯定加分的。如果info=168cm,那就要扣分的。

所以暂时写成:当然后续我会逐步优化算法。

图片

然后是收入,同样的,我们按照年收入/元 来计算。每超出10000算10分

图片

然后是age年龄,超出一岁扣20分,小一岁加20分。

图片

然后是学历,这个差一级差50分吧。

但是难点在于,先要从信息中精确定位出来真实的。毕竟人输入的各有千秋,比如本科,本,大本 这些都是本科。

图片

如上图,我先设置了学历递增列表,然后算出want和info的学历下标,再用下标差来计算最终得分。比如研究生下标是5,本科下标是4,那么得分就是

(5-4)*50 = 50分。如果完全没获取到,就算-100分

然后我们继续算地址匹配度。

这个我们可以直接使用第三方的字符串相似度库

图片

图片

这个库的得分都是0.几,最大是1 所以结果✖️100

好了。现在我们再次测试鸣人的匹配结果:

图片

概率上来讲,纲手>雏田>小樱。

如果看己方角度得分,那么鸣人最心仪的是雏田,最不想匹配的是纲手奶奶。

如果从对方角度得分看,纲手是最心仪鸣人哦~ ,而小樱则是嫌弃到负数。

本系列开发过程暂时结束,后续就是优化了哈~  

声明:文中的动漫角色均非实际角色,数据是随机填的,所以结果并不符合真实剧情,不惜勿喷哦~  等作者之后给按照真实属性填入后就会看到...

然后顺便看看其他角色的匹配结果:

图片

果然鸣雏还是概率最高哦~

图片

小樱和鸣人概率也很高

图片

纲手奶奶和谁概率都高,没办法,毕竟火影。

图片

佐助的话,果然逃不掉和纲手奶奶...