ustc-course icon indicating copy to clipboard operation
ustc-course copied to clipboard

使用 MySQL 全文搜索索引的搜索

Open taoky opened this issue 4 months ago • 4 comments

解决目前搜索功能性能太差的尝试,需要在实际数据上测试性能和搜索效果(主要是点评,我没有测试的条件)。

解决思路:

  • 新增 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 表内容

目前效果:

image image image

另外确实存在原来能够搜索到的,目前这个方案搜索不到的情况,比如说「计算机程序」会被 jieba 分为完整的词,但是 cut_for_search 预处理的时候分得更细,所以会没有结果。

taoky avatar Feb 08 '24 09:02 taoky