项目一补充

5 篇文章 0 订阅
3 篇文章 0 订阅

快速搜索文档神器项目整体框架补充

数据库是核心,之所以快速,是因为我用到了数据库Sqlite3。
将本地的所有文件加载到数据库,通过sql语句来进行文件的搜索

那么如何知道本地文件和数据库的文件是一一对应的,这就需要添加一个扫描模块。先扫描本地的文件,再扫描数据库的文件,进行比对,如果数据库文件少了,则进行插入;如果数据库文件多了,则要进行删除。

而要操作数据库,则需要把数据库进行封装,使代码更有可读性。
但是仅仅封装了数据库是没有意义的,还需要封装一个数据库的数据文件管理类,用来创建数据库和表,并且将文档数据进行增删显示的操作,才能做到数据库文件与本地文件的一一对应关系。也就是说,在宏观上来看,就是操作数据库文件,即对数据库文件进行增删查的操作。而不去显示数据库底层的实现,只调用简单的调用接口,既方便又易懂。在这里插入图片描述
当数据库文件准备好之后,就需要去搜索相关的文件。但是程序仍存在问题,即是实时性问题。当在本地添加一个文件后,需要重新执行程序,去做到本地文件和数据库文件的一一对应,这样的系统是静态的死系统,是不能使用的。同样的道理,如果本地删除了一个文件,而数据库文件中还存在本地该文件,说明它也是静态的死系统。
所以,为了解决实时性问题,需要利用多线程,将整个程序分为两条线,一条是进行本地文件和数据库文件的扫描,另一条线则是进行客户端的搜索,这样就会达到实时性的功能。

为了减少扫描的代价,而不是时时刻刻在进行扫描的工作,太耗时间,需要增加一个监控机制,在有文件有变化的时候去通知扫描线程,再进行扫描,从而提高效率。

而监控模块只针对监控本地文件个数是否有变化,它的效率优于本地文件和数据库文件对比的方式,减少扫描的压力,这就是增加监控机制的意义。而监控模块也需要采用多线程的原理,但是监控模块和扫描模块不能单独地执行,必须有相应的联系,否则监控模块毫无作用

在代码中,扫描模块不需要数据库管理的对象了,因为要分开执行。那么相应的数据库管理模块也需要单独进行,方便客户端的搜索。

搜索分为四种搜索,并且要实现搜索关键字的高亮显示
1.拼音一般搜索
2. 拼音全拼搜索
3.拼音首字母搜索

而界面只需要简单的编排就可以实现。

最后,跟everything相比,这个项目各种功能确实还存在很多不足,所以还有不断学习的空间,everything的源码还是值得我去研究,去用心啃的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值