ustc-course
ustc-course copied to clipboard
使用 MySQL 全文搜索索引的搜索
解决目前搜索功能性能太差的尝试,需要在实际数据上测试性能和搜索效果(主要是点评,我没有测试的条件)。
解决思路:
- 新增 CourseSearchCache 和 ReviewSearchCache 两张表,其中的
text
字段存储用于全文搜索的字符串,并且构建 fulltext index; - 在 view 中实现修改时更新 cache,同时 tests 中提供脚本来 drop/init
- 更新时使用 jieba 分词,之后合并为以空格分割的字符串存储
- 配置中允许切换搜索后端(原来的 like 和这个方案)
- 搜索课程时要求必须包含对应 keyword,搜索点评时没有
如何测试:
- MySQL 添加最短字符的配置(参考 README)
- 初始化数据库创建 cache 表
- 运行
python -m tests.manage_searchcache --init-course --init-review
初始化 cache 表内容
目前效果:
另外确实存在原来能够搜索到的,目前这个方案搜索不到的情况,比如说「计算机程序」会被 jieba 分为完整的词,但是 cut_for_search
预处理的时候分得更细,所以会没有结果。