全文检索+千万数据排序+limit分页,时间1秒

suizouwuya 2016-04-12 03:49:41
原需求:
1、全文检索多个字段
2、检索结果按时间倒叙排序
3、排序结果按limit offset分页输出,每页100(可以调整)
4、每次分页输出时间最好在1秒内,也可5秒

尝试方案:
--关于greenplum
1、全文检索需要的词典要定时更新,否则可能无法检索到陌生词汇,否决。
--关于Postgres
1、使用gin索引+pg_trgm做分词(三字分词),效果很好
2、水平拆分,使用分区表,但是每个月的数据仍然可能会很大(千万级)
3、考虑过局部索引,会有效果但是分页时会不适合,比较麻烦,暂时跳过
4、垂直拆分,测试发现拆分后有接近10倍的提升,但是每个分表时间在5-9秒,join之后肯定更多
5、搜索引擎sphinx,正在部署测试

请问各位大神,有没有什么建议?
数据库不限,尽量稳定;甚至不用数据库也可以,但是要考虑以后的拓展。(机器不能多,最好1台)
...全文
463 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suizouwuya 2016-04-16
  • 打赏
  • 举报
回复
人工置顶!
suizouwuya 2016-04-12
  • 打赏
  • 举报
回复
mysql+sphinx(一元切分): 1、检索分页输出用时约3秒; 2、count(结果集)数量为2000(后发现用时似乎与数量成反比),用时约3秒; 3、出现重大问题:分页不能超过1000(除非改sphinx的代码,否则没法使用) ERROR 1064 (42000): offset out of bounds (offset=1000, max_matches=1000) 4、发现问题:结果集无title(varchar)列 sphinx总结:满足部分检索效率需求,但是需要付出开发成本(使用sphinx协议)+数据库管理成本(sphinx索引、searchd)+sphinx源码修改成本。
suizouwuya 2016-04-12
  • 打赏
  • 举报
回复
刚刚使用sphinx+mysql测试,发现局限于词典,词典中有的词检索非常快,词典中没有的词检索不到。

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧