网站框架基本上算是搭完了,现在需要考虑接下来的技术性问题了。分给我的任务是知识图谱和学习路线推荐(恕我直言单凭我的实力做一个像百度那种问什么答什么的知识图谱有点难为我了)。那就做学习路线推荐吧,找到一篇论文是说精准个性化学习路径的研究的,是mooc网在用的一种方法,刚好我在数据仓库与数据挖掘课上也了解过这个算法。这是一种频繁序列挖掘算法,不同于相关性发掘,它考虑到了前后顺序的问题,一想就觉得非常适合学习路径挖掘,这个算法的详细解释我们下次聊。
因为是频繁序列挖掘,那么就需要记录下访问记录,于是今天做了一下各种知识和课程的访问记录。
先添加了两个model,course_visit和knowledge_visit(很类似 贴一张图上来好了,下面其他内容也一样)
就三个属性,访问用户,访问知识(课程),访问次数记录。
把用户和知识的外键绑定:
ok,这样这个model就可以用了。观察了一下代码,应该是只有show方法被调用的时候才应该记录访问次数,不过考虑到扩展性和维护性,决定把这个方法写成拦截器的形式。
先在knowledge_controller里面写好拦截器用到的方法:
这里的逻辑是,如果在库里已经有了这个用户访问这个知识的记录,那么直接在计数上加一,否则创建一条新的记录。
可能是由于知识和问答、专栏、资源采用了单表继承,不知道咋回事把拦截器写在knowledge_controller里面不管用,所以在question、blog、resource的controller里都加了同一句话:
这样在show方法被调用的时候,rails就会自动调用拦截器,执行record_visit方法。访问记录大功告成了。