论文部分内容阅读
Github已经成为当下最受欢迎的开源代码托管平台,越来越多的开发人员和企业将项目上传到Github平台上。开发人员由于疏忽和安全意识不足,将含有敏感信息的代码库上传到Github的公共区域,导致敏感信息泄露,带来了许多安全危害,因此,能够有效识别源码中的敏感信息的技术手段显得尤为重要。针对这种现状,本文基于Elasticsearch全文检索技术设计并实现了一个敏感信息检测系统,在保证搜索精确度和查询性能的基础上,能够根据关键词从海量源码文件中搜索出含有敏感信息的文档。本文深入研究了搜索引擎技术中常用的中文分词算法和排序算法。其中,中文分词算法包括:基于字符串匹配、基于词频统计以及基于语义分析等3种中文分词算法,使用基于字符串匹配算法实现的IK分词器对源码文本进行分词。排序算法包括IF-TDF算法、PageRank算法以及BM25算法,分析各个排序算法的原理和优缺点,改进BM25算法应用于搜索结果排序。考虑到数据量比较大,且数据还会持续增长,本文使用HDFS分布式文件系统来存储源码数据,优点是HDFS集群易扩展,可以通过增加节点的方式扩充存储容量,且数据不易丢失。缺点是HDFS不适合存储海量小文件,本文通过将一个项目中的所有小文件合并为一个大文件的方式解决了该问题。部署Elasticsearch集群作为搜索引擎提供全文检索功能,将HDFS集群中的源码文件读取并上传至Elasticsearch集群中,期间经过一系列优化方案提升了 Elasticsearch集群的索引性能和查询性能。基于对系统的需求分析、概要设计以及详细设计等,使用Spring Boot、Thmeleaf、MyBatis Plus、Layui等技术实现了敏感信息检测系统,最后对系统进行测试,测试结果符合预期。