聚合搜索平台 笔记

【聚合搜索平台】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,也把内存吃满了,跑不了其他项目了。本来以为很好的微服务改造,结果把自己弄得狼狈不堪,总之部署就到此为止吧。 m9oncr00 0j9rdon8 bsk69cv4 npjqsl42 vom13v6i fx9qtt0c kdbityv5

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Reflux
作者分享
悲伤的一天 打杂,拉数据,测接口。 搞得多了干脆不用Java了,拿Python写快一点。 要求一个接一个,没啥时间学习。 好不容易完成需求,还得提心吊胆是不是做太慢了,正职要那么久吗? 同事们都不错,相处久了就暴露自己幼稚的一面。今晚十点多,打算全量跑一笔数据,code review说需要加根据xxx加兜底,我一听直接说没学过哎,因为我想早点回家改论文了,看到老板脸色一青我才知道说错话了,但也不知道怎么补救。算了,明天再做吧。 倒是有做了一个独立项目,但是之前没人做过类似的事情,不知道怎么验证正确性,偏偏又涉及比较关键的数据,所以迟迟没拿到结果。 上班和学习感觉还是很不一样的。前者要累得多,尤其是面对没遇到过的问题急得团团转,担心能不能在期限内做出来,这感觉,压力还是很大的。别的同事也有很多事情,bug最后还是需要自己来找的。 不要拿我正在努力做事情来安慰自己,如果是没价值的事情,做起来或许只是待在舒适圈。有时候不是努力,只是享受没浪费时间的感觉而已。当身体不行的时候,意志力会带你去另一个世界。 调休这个事情,读书的时候没感觉,毕竟不想听课了还能玩手机,但对于上班,面对做不完的事情的时候,就觉得,不能这样搞,还是要均匀的休息,要多多的休息。 乱七八糟想一通,希望能顺利毕业吧。 表现好表现差,都只不过是一天,明天再继续努力,也是可以的 打杂,拉数据,测接口。
9
4月4日求助 原题目背景:小明想和朋友对比双方收藏夹的网站。 现在有A、B两组字符串 其中每个字符串都以英文点号分割,如:www.baidu.com 请于A组中找到B组中不包含的字符串。 并且考虑下面一种情况:A中字符串包含B中字符串,也算匹配成功 如:A中的www.baidu.com包含B中的www.baidu 包含的部分需要以点号分割,并且完全匹配 单个字符串可能比较长,请尽量在考虑性能的情况下完成扫描匹配。 样例1: A中含有字符串:baidu.com、zz.xxx.baidu.cn、baidu.net.un B中含有字符串:baidu.com、zz.xxx.baitu、baidu.net 那么A匹配上B的字符串为 baidu.com,因为完全匹配、以及baidu.net.un,因为它有一部分前缀和B中字符串baidu.net完全匹配 思路一:把B的字符串全装入Hash、遍历A的字符串key,看是否能直接匹配,不能,则遍历B字符串,看是否有B字符串为A字符串的前缀。时间复杂度高 思路二:当不能直接匹配时,从后往前切分A的字符串,每切分一次就再次使用hash的contains进行完全匹配。仍然不能通过,因为A中有个别字符串非常长,但B中没有该串,需要做大量无用的切分。 思路三:前缀树、KMP,时间不够了,也不知道能不能行。 有没有朋友能帮帮忙,集思广益一下,撕不出来了。
9
日子没半天闲的[发抖] 完事一定去校医院体检一下,最近老是掉头发,洗澡打上洗发水也搓不出泡泡,头发稀疏导致的吗? 秋招减了十斤,减肥神器。最近忙学校乱七八糟的不知道会减多少斤。 🙏希望人没事。朋友们,一定爱惜身体,噶了的话半辈子白搭辽。
20
需求驱动设计 互联网精神 这几天,玩hexo&butterfly玩得不亦乐乎。 令我很伤心的是,大部分好看的魔改,都不把整个魔改历程发出来,眼馋某个设计的时候,前端基础又无法支撑我完成[困] 不过也可以理解,有的大佬是因为做完当时没记录,之后忘了具体怎么写的了,有的是自用,有的是省略了一些小白的教学。 由此,更加感激那些开源的大佬了[强],时间都是钱,相当于别人把自己的钱免费送[抱拳],不得不佩服这种无私的精神。 魔改了几天,反而一篇博客没发[捂脸],很明显本末倒置了哈哈哈,忘了自己最初的需求只是找个地方搬运自己的笔记。 anyway,我的博客魔改之旅就此打住,能用就行[奸笑],完成比完美更重要。
13
国庆回来收获最大的一场面试,基本都说到点子上了。时间是国庆收假,距离现在8 9天,emo了好久,厂子不说了,都听说过。大家要好好努力,让自己更有底气才行哇,不然要难受好久。 问:你对我今天有什么建议 答:说实话,你的简历在已经发offer的同学中,差距比较大,可能只是看出你有几个项目经验,有点那么点意思,把你放了过来,但最大的问题是你没有实习经验,这个是硬伤,你没有接触过实际公司的业务开发,然后你做这些东西,从它的实际背景上,实际应用上,深度上,然后包括技术上,其实都远远不够,刚刚问你实际的应用价值,你根本答不上点子上,所以我就不会深入去问了,最基本的一个考虑其实就过不了关,然后很明显的一个缺陷就是,问你什么你答什么就行了,然后关心的你可以多说说,不关心的其实你没必要去带着面试官,不可能被你带着走的,所以这些点综合来看,我觉得你有点盲目自信,不是打击你,这份简历,在这整个校招中,属于中下位置,还有一个是你目前是本科学历,现在很多研发岗本科已经不招收了,除非特别优秀的,我个人感觉,你目前应该是没有offer的,因为面的很多优秀的,目前也还在流程中,根据整体的流程来看,我觉得你需要赶的东西还很多,如果可以的话,最好还是找一份实习,如果你想本科找工作的话,立即,实习起来,然后春招。如果这条路走不通,那么我建议你读研。不排除你这样面下去,你可能会有offer,因为中小企业可能很需要人。
31
下载 APP