知乎Live全文搜索之模型接口
看这篇文章前推荐阅读相关的如下文章:
知乎Live全文搜索之模型设计和爬虫实现
知乎Live全文搜索之使用Elasticsearch做聚合分析
知乎Live全文搜索之使用Elasticsearch做搜索建议
知乎Live全文搜索之让elasticsearch_dsl支持asyncio 在知乎Live全文搜索之让elasticsearch_dsl支持asyncio
一文中,我把后端工作分成了4步,今天是完成爬虫和模型接口这2步,接口返回的数据会被微信小程序使用。详细的列一下接口需求:
搜索。搜索符合输入的关键字的Live和用户,按照之前提到的各种策略排序,也支持通过status状态过滤「已结束」和「未结束」2种类型的Live。支持分页。
搜索建议。提供符合输入的关键字的Live的建议。
发现。把全部的Live按照之前提到的各种策略排序,可以通过各种字段排序,可以选择Live开始的时间范围(默认是全部)。
获取热门话题。
获取某话题详细信息及话题下的Live,支持分页、排序、时间范围。
获取全部用户,并且可以按照举办的Live数量、更新Live时间等条件排序。
获取单个用户信息。
根据各种策略排序,获取7天热门Live,非知乎排序。
根据各种策略排序,获取30天热门Live,非知乎排序。添加Topic模型由于4和5的需求,我添加了Topic这个模型,上篇文章说过SQLite不支持并发,所以替换成了MySQL,要把config里面的DB_URI改成如下格式:
12DB_URI = 'mysql+pymysql://localhost/test?charset=utf8mb4'
其中test是库的名字,charset要用utf8mb4,因为有些用户信息甚至Live的标题里面包含emoji。MySQL的客户端用的是PyMySQL,需要在schema上指出来。Topic类和之前
...