查看原文
其他

用 Kooder,为你的自建 GitLab 设置一个全能搜索引擎

Gitee团队 Gitee 2022-04-23

一个企业里往往有大量的项目,每个项目都包含很多的代码,经过日积月累,不同的开发人员不断地对代码修改完善,代码和代码仓库的数量也随之增长。

当想要统一排查代码是否包含某类敏感信息,或检查是否使用了某些不安全的方法时,就需要开发人员各自手工排查自己负责的代码,费时费力。

因此,企业全库的代码搜索就变得非常重要。尤其对于将代码通过 GitLab 部署在本地服务器的企业,由于缺少了云端托管平台自身集成的搜索引擎,想要在本地进行全局的代码搜索就变得异常困难。

为解决该问题,Gitee 团队在近日开源了代码搜索工具 Kooder,Kooder 的目标是为包括 Gitee/GitLab/Gitea 在内的代码托管系统提供自动的源码、仓库和 Issue 的搜索服务。

仓库地址:

https://gitee.com/koode/kooder

Kooder 架构

Kooder 服务包含两个模块,分别是 gatewayindexer(默认配置下 indexer 被集成到 gateway 中)。

其中 gateway 用来接受来自 HTTP 的索引任务, 对任务进行检查后存放到队列中;同时 gateway 还接受搜索的请求,并返回搜索结果给客户端。

indexer 进程负责监控队列中的索引任务, 并将这些要新增、删除和修改索引的任务更新到索引库中。

数据流图

在运行过程中,Kooder 会自动处理所有索引动作,包括推送代码的自动更新。同时 Kooder 也提供了搜索的 API 可以方便的嵌入到别的应用中。

搜索界面效果

在搜索框中输入你想要搜索的函数、变量或方法名,即可在全仓库内搜索它们,并为搜索结果进行了语言的归类,查看更方便。

主要技术栈

Kooder 不依赖于 Java 容器服务,是一个独立的应用程序,它的主要技术栈有:

  • lucene
  • jgit
  • vert.x
  • jcseg
  • velocity
  • jackson
  • gitlab4j
  • Spectre.css

进行贡献

Kooder 遵循 Apache-2.0开源协议,欢迎开发者们踊跃提交 Issue 和 PR。

Kooder 刚刚在前两天完成了 1.0 Alpha2 版本的更新,更多详细信息请前往代码仓库查看,别忘了给它一个 Star 哦:

https://gitee.com/koode/kooder

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存