Redis 实战 —— 10. 实现内容搜索、定向广告和职位搜索 (3)

在同类型广告的平均点击通过率和当前实际点击通过率之间,构建一种简单的反线性关系 (inverse linear relationship) 或者反 S 关系 (inverse sigmoid relationship) ,直到广告有足够的展示次数为止

人为提高点击通过率,保证有足够多的流量学习真正 eCPM

考虑使用真正的贝叶斯统计、神经网络、关联规则学习、聚类计算或者其他技术来计算附加值

将记录信息的逻辑变为异步(可以利用 09. 实现任务队列、消息拉取和文件分发 中的任务队列实现),提高响应效率

职位搜索 P180

接下来将使用集合和有序集合实现职位搜索功能,并根据求职者拥有技能来为他们寻找合适的职位。 P180

遍历合适的职位 P180

第一反应肯定是直接对每一个求职者搜索所有的岗位,从而找到求职者合适的岗位。但这种方法效率极低(大部分岗位肯定是技能对不上的),而且无法进行性能扩展。 P181

搜索合适的岗位 P181

使用类似上面提到的附加值形式,每次添加一个岗位时,在对应的技能集合中添加这个岗位的 id (SADD idx:skill:{skill} {job_id}),再在岗位有序集合中进行添加,成员为岗位 id ,成员的分值为所需的技能数量 (ZADD job_required_skill_count {job_id} {required_skill_count})。搜索的时候就先对求职者所有技能对应的集合使用 ZUNIONSTORE 操作计算每个公司匹配的技能数量 (ZUNIONSTORE matched {n} idx:skill:{skill} ... WEIGHTS 1 ...),然后再与岗位有序集合求交集,并让公司有序集合的权重为 -1 (ZINTERSTORE result 2 job_required_skill_count matched WEIGHTS -1 1),最后获取分值为 0 的所有岗位即可完成搜索。 P181

所思

书上的这个方法比较麻烦,其实可以使用文章最开始的无序倒排索引,岗位相当于要搜索的文档,岗位所需的技能相当于单词。

本文首发于公众号:满赋诸机(点击查看原文) 开源在 GitHub :reading-notes/redis-in-action

Redis 实战 —— 10. 实现内容搜索、定向广告和职位搜索

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyjzd.html