从零开始:用C#开发的海量文件内容秒搜神器TDSContent——免费开源高效办公必备!
从零开始:用C#开发的海量文件内容秒搜神器TDSContent——免费开源高效办公必备!
还在为全文搜索烦恼吗?是否被收费软件的糟糕体验困扰?是否担心闭源程序带来的安全隐患?是否在标准版和增强版之间纠结不已?
别担心,新时代的开源文件内容搜索神器 TDSContent 来了!它是文件名搜索神器 TDS 的姊妹版,完全免费、MIT开源、安全,绿色无需安装、无需联网,直接本地运行即可
一、项目介绍
TDSContent (TDS姊妹版),是一个MIT开源的,超级简单易用的本地全文搜索工具,几乎可以在毫秒内,搜索出存储在目标文件夹里所有文件的文字内容,快速为您定位重要信息。软件使用简单,完全免费开源安全,绿色无需安装、联网,直接本地运行即可。
TDS文本的搜索实现基于了开源的Lucene.Net(Apache License, Version 2.0)引擎,没错,就是Elasticsearch用到的那个Lucene。基于该引擎,我们默认实现了对纯文本类文件(txt,json,md,ini,log)、Word文档(docx)、PPT文档(pptx)、PDF文档(pdf)等格式的全文索引,后续还将逐渐实现更多文件格式的支持。用户也可自行开发通过接口实现自定义的解析器。
以下是一段录屏展示了基本的使用方法,以及对路径、内容更新的响应。
二、使用上手
TDSContent有着简洁易用的界面,克制且优雅,没有任何复杂的面板。
2.1 首先需要以管理员权限启动,初始化完成后,在下方空白处点击右键,选择"Add folder to index..." 添加文件夹后即可。
首次启动会占用一些索引时间,正常使用时,下次启动初始化时间会大大缩短。
2.2 选择添加的文件夹路径
程序默认会包含当前路径内部所有子文件夹的所有文件。扩展名默认提供了.txt .docx .pptx .pdf,如果是纯文本类的文件比如 .md .json .log 可以自行在下方 “Add extension of pain text files" 输入扩展名,以'|'符号分隔
2.3 文件夹路径已经添加完成
点击确定后,程序会在后台更新文件内容。仅首次进行所有内容的扫码并压缩为索引存储在根目录。如果有文件无法读取,可在程序目录的log日志中查看原因。
搜索结果展示:
2.4 文件路径的更新
您可以添加多个文件夹作为索引目标。当文件夹内容发送变更、路径发生变更、文件名发生变更时,一正常情况下,程序都会在下次搜索时以增量的方式异步自行处理并修正,无需您手动操作。
程序不会实时的监控系统文件变化,因此无需担心平时您正常使用时会有性能影响。
三、疑问
3.1 文件数量很多怎么办?性能会不会变慢?
- 文件数量主要影响在于初次检索的速度很慢,在索引完成后进行搜索时,响应基本都是百万量级-毫秒/秒级别响应。
3.2 为什么有的文件内容会搜索不到?
- 当前默认的搜索模式为
PhraseQuery
,需要输入完整的词以适配分词后的索引信息。后续将开放更多比如模糊、正则等搜索匹配模式的UI选项(可用选项包含Pharse,TermQuery,WildcardQuery,FuzzyQuery,TermRangeQuery)。 - 首先检查文件的权限是否能被程序读取。
- 因为Office软件会产生大量类似命名的临时文件,以
~
和以{
符号开头的文件将被自动忽略,需要检查您的文件是否包含以这些符号开头的命名。 - 索引更新不及时。在特殊情况下,索引的自动更新机制可能会发生异常。这是因为程序是通过读取USN日志实现更新监控的。如果中间操作过大文件处理较多,或者USN日志记录中断都可能造成更新不及时,因此可能需要进行手动的点击"Reindex selected folders"以重建索引,耗时又索引文件夹内文件数量及大小决定。
3.3 为什么有的文件搜出来了但打开提示路径错误?
- USN更新失效,需要手动的点击“Refresh USN"重建,耗时大概20秒
3.4 还能支持更多格式吗?比如xlsx,doc等
- 文件格式转换由
IFileToStringConverter
接口实现,理论上可以任意扩展。但考虑实用性以及开源协议的传播性(本项目为MIT)等问题,暂时未做多选,后续会逐渐增加。 - 例如dwg、dxf的等格式解析适配已经开发完成,后续将集成到默认实现中。
- 理论上可以任意扩展类型,只要能转化成文本。
3.5 资源占用情况大不大?
- 没有后台常开线程常实时监控或定时刷新系统文件变化,不会无谓的扫描全盘,只会在用户操作时自动根据USN记录按需触发更新。
- USN信息存储在内存中,由磁盘的文件数量级文件名长度共同决定,大概是每1万条目占用400kB左右。
- 索引信息为磁盘存储,当索引创建完成,再次启动时内存占用将大幅度降低。索引占用情况与Lucene引擎的压缩存储有关,测试的压缩比例大概为100:1甚至更小。
3.6 是否收费?
- MIT开源,好用的话请给个星星。
- 没有基础版、增强版,所有格式解析器后续更新的都会免费提供。
四、最后
希望TDSContent可以助您实现高效优雅的文件内容检索。后续微信公众号萤火初芒
将会和大家分享如在C#中从零开始完成TDSContent这个项目过程中的思考、框架以及技术关键点。项目现阶段以基础功能实现为主,仅对关键代码进行了斟酌,仍在持续更新和修复小问题,难免还有bug,我们将持续优化更新。
欢迎大家点赞关注收藏。本项目已在Github仓库完全开源了!点个 Star ⭐️支持一下!代码仓库地址 https://github.com/LdotJdot/TDSContent,其他项目可关注微信公众号,发送消息 “TDS”,"Json"即可查看!
希望这篇文章对你有所帮助,也欢迎大家在学习过程中提出问题和建议,欢迎随时交流!
如果github上不了,朋友们可以去百度网盘下载:https://pan.baidu.com/s/1vT_ex1nSXuxnnMYIfJNs9g?pwd=2mvo (version c1.0.3)
项目中部分组件使用Apache License, Version 2.0协议,特此声明:
- Lucene.Net.Analysis.SmartCn: https://lucenenet.apache.org
- PDFiumCore: https://github.com/Dtronix/PDFiumCore
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936964.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!