Hound 代码搜索:让你的代码库查找快到飞起

9 months ago

你是不是经常遇到这样的场景:明明记得写过某个功能,但就是找不到在哪个文件里?或者接手一个大项目,想找某个API的调用位置,结果用IDE搜索半天还在转圈圈?

今天给你介绍一个超级好用的工具 —— Hound,一个闪电般快速的代码搜索引擎。用过之后,你会发现找代码就像在Google里搜东西一样简单!

https://appstore.lazycat.cloud/#/shop/detail/com.luck.lazycat.hound

Hound有啥特别的?

1. 速度快到离谱

Hound基于Google工程师Russ Cox的三元组索引算法,核心是预先建立索引,搜索时几乎是瞬间返回结果。不管你的代码库有多大,搜索都是毫秒级响应。

2. 支持多种版本控制系统

支持Git、Mercurial、SVN、Bazaar,还有本地文件夹。基本上你用的版本管理工具它都支持。

3. Web界面超友好

有一个React写的前端界面,在浏览器里就能搜索,结果还能分享链接给同事。

10分钟快速上手

应用打开后,只有一个搜索框,随便输入一个单词

image.png

下方很快出现了搜索结果,它默认的配置是这个config.json

image.png

打开之后,发现是这种配置

image.png

聪明的你肯定想到了要改这个文件,配置成我们的地址。

基础配置:索引单个仓库

最简单的配置,只需要指定仓库地址: 以这个仓库为例

image.png

它的 github 地址是https://github.com/9001/copyparty/tree/hovudstraum

image.png

注意保存之后,要重启应用才会生效。

重启后可以看到效果了: image.png

进阶配置:管理多个项目

如果你有多个项目要管理,可以这样配置:

{
  "dbpath": "db",
  "max-concurrent-indexers": 2,
  "repos": {
    "backend-api": {
      "url": "https://github.com/team/backend.git",
      "ms-between-poll": 60000,
      "vcs-config": {
        "ref": "main"
      }
    },
    "frontend-app": {
      "url": "https://github.com/team/frontend.git",
      "ms-between-poll": 60000,
      "vcs-config": {
        "ref": "develop"
      }
    },
    "mobile-app": {
      "url": "https://github.com/team/mobile.git",
      "ms-between-poll": 120000
    }
  }
}

几个关键配置项:

  • ms-between-poll:多久更新一次索引(毫秒),默认30秒
  • max-concurrent-indexers:并发索引数,项目多的话可以调大
  • vcs-config.ref:指定分支,默认是默认分支

索引私有仓库

使用SSH密钥(推荐)

{
  "repos": {
    "private-repo": {
      "url": "git@github.com:company/private-project.git"
    }
  }
}

前提是你的服务器已经配置好了SSH密钥。

使用访问令牌

对于GitHub私有仓库,可以在URL中加入访问令牌:

{
  "repos": {
    "private-repo": {
      "url": "https://YOUR_TOKEN@github.com/company/private-project.git"
    }
  }
}

Hound支持强大的正则表达式,比如:

  • func.*Test - 查找所有测试函数
  • TODO|FIXME - 查找所有待办事项
  • console\.(log|error|warn) - 查找所有console输出

在搜索框旁边可以选择文件类型,只搜索特定类型的文件。 如果配置了多个仓库,可以选择只在特定仓库中搜索。

image.png

当线上报错显示"Invalid user token",你可以直接搜这个错误信息,瞬间找到所有相关代码位置。

常见问题解答

Q: Hound和IDE的搜索有啥区别? A: IDE搜索通常只能搜当前打开的项目,而且大项目会很慢。Hound可以同时搜索几十个仓库,速度还特别快。

Q: 能搜索二进制文件吗? A: 不能,Hound只索引文本文件。图片、视频、编译后的文件都不会被索引。

Q: 支持中文搜索吗? A: 支持!中文变量名、注释都能搜索。

image.png Q: 索引会占用很多磁盘空间吗? A: 索引大小通常是源代码的30%-50%。比如1GB的代码,索引大概300-500MB。

Q: 可以搜索特定分支吗? A: 可以,在配置文件中用vcs-config.ref指定分支名。

编辑器集成:Sublime Text和Vim都有Hound插件,可以直接在编辑器里搜索。

写在最后

Hound真的是那种用了就回不去的工具。不管你是个人开发者还是团队协作,Hound都能大幅提升你的开发效率。

祝你代码搜索愉快!


项目地址https://github.com/hound-search/hound
官方文档https://github.com/hound-search/hound/tree/main/docs

作者
天天