场景:表中有大概有 500w 数据 每条数据自己编号长度 17 位 要求:要求对编号实现模糊搜索
实现方案:全文搜索+like 辅助 要求用户最低输入 3 位字符,对于数字词太少几乎无法提升性能 实现步骤: 1.将 code 进行分词 存入 code_search 字段 1.1 分词方式 按照 3 位滑动窗口进行分词 比如 abcdefg 分为 ABC BCD def efg 2 .搜索 先对关键词分词 ,按照 3 位分 最后不够向前补全 比如 abcdefg 分为 ABC edf dfg 3.查询 SQL SELECT * FROM table_name WHERE MATCH(code_search) AGAINST('+ABC +def +dfg' IN BOOLEAN MODE) and code like '%abcdefg%' and
最后:实测 500w 数据查询在 10 毫秒左右,这种方案关键在于分词 如果分出来的词查询结果越少 舒服越快,几乎不受总数据量影响