聚合搜索平台 笔记
【聚合搜索平台】By Reflux
经过了几天,聚合搜索项目完成了
完成的工作有:
1、前端简单实现了分页
2、将搜索建议定义为DataSource的一个新的接口,后续接入本项目的数据源可以选择按规范实现搜索建议。又是一次门面模式和适配器模式的使用。
3、使用拼音分词器实现搜索建议
4、实现搜索高亮
解决的bug:
1、根路径type为空
2、异步调用子线程请求request时处理ThreadLocal 不能保存上下文的问题
3、ES安装的一些踩坑。
未解决的问题:
1、canal无法监听数据库,即使按鱼皮的方法做了也不行,后续考虑降mysql版本再试试
后续计划
1、还在学习部署,所以还没部署成功
2、改造成微服务
3、前端完善。实现按tag类型聚合数据
心得体会:
做的过程中,觉得这个项目太简单了,因为关键的ES部分,鱼皮没带我们实现,而是直接写好在万用模板里了,当实际写ES代码的时候,又觉得很抓瞎。
专门学习了一番ES,学了三天这样,回过头再看回放,告诉我HighLevelRestClient被淘汰了,尴尬无比。
这次经历告诉我,不要多碰前端,能抄就抄。除非以后系统学过vue了,才可能自己设计前端。
笔记里踩的坑大部分都是前端的😂,因为这是我第一个前端自己做的项目,时间就这样浪费了。
最后要感谢松柏哥,抄了他前端设计搜索建议的模块,思路很巧妙。如果我是做前端方向,可能还想去完善一下防抖,但我只是个小菜鸡。
笔记记得还是比较用心的,写了1万多字,希望能给后来人一点帮助
————————————————————————————————
更新:
1、试图改造聚合搜索,让它能集搜索和管理为一身,搜索出结果之后可以使用管理端修改结果。
也就是:改造聚合搜索为微服务项目,使用nacos和Feign进行远程调用,更方便未来接入本项目的搜索模块。
2、对于使用远程调用的DataSource,聚合项目没有连接它们的数据库,无法采用定时任务更新,改为使用消息队列来同步
3、添加视频源
4、分页可以选择每页展示页数,方便选择一页展示更多内容
5、试图改造搜索逻辑,ES查询,再从Redis缓存或者数据库读取完整数据,如果查询失败,再使用爬虫搜索,搜索结果使用线程池异步存入数据库。(成功了一次,看最后两张图,哈哈,爬虫还是不太稳定的,所以最好还是提前抓取数据到本地吧)
6、部署:ES、kibana、RabbitMQ使用docker部署
7、Linux部署nacos踩坑
8、前端和后端多环境学习(第一次部署项目)
9、解决了鱼皮源代码中一个小问题(图一为修改后和图二为鱼皮前端),type和路由参数不一致的问题(我不改这个线上前端不能正常响应数据,其他人的不知道为什么却可以,我好惨阿,老是遇到奇奇怪怪的问题,不过幸好都能解决)
10、由于ES和nacos占用内存太高,所以最终部署没带上ES。只带了nacos都很勉强😂,所以部署完也没打算让它一直在服务器跑,也没域名,就不发在线访问了
11、添加了图片和视频可以点击链接跳转。
12、完结撒花。
————————————————————————————————
更新:把本来很香的108的阿里云退了,买了腾讯云的两核4g进行部署,结果发现,4g也抗不住微服务和ES,我跑的时候ES一直自动挂掉,我还以为我配置错了,最后把微服务停了,只跑ES才跑得顺。就算只跑ES,也把内存吃满了,跑不了其他项目了。本来以为很好的微服务改造,结果把自己弄得狼狈不堪,总之部署就到此为止吧。


