- 博客
- Hound 代码搜索:让你的代码库查找快到飞起
Hound 代码搜索:让你的代码库查找快到飞起
你是不是经常遇到这样的场景:明明记得写过某个功能,但就是找不到在哪个文件里?或者接手一个大项目,想找某个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分钟快速上手
应用打开后,只有一个搜索框,随便输入一个单词

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

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

聪明的你肯定想到了要改这个文件,配置成我们的地址。
基础配置:索引单个仓库
最简单的配置,只需要指定仓库地址: 以这个仓库为例

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

注意保存之后,要重启应用才会生效。
重启后可以看到效果了:

进阶配置:管理多个项目
如果你有多个项目要管理,可以这样配置:
{
"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输出
在搜索框旁边可以选择文件类型,只搜索特定类型的文件。 如果配置了多个仓库,可以选择只在特定仓库中搜索。

当线上报错显示"Invalid user token",你可以直接搜这个错误信息,瞬间找到所有相关代码位置。
常见问题解答
Q: Hound和IDE的搜索有啥区别? A: IDE搜索通常只能搜当前打开的项目,而且大项目会很慢。Hound可以同时搜索几十个仓库,速度还特别快。
Q: 能搜索二进制文件吗? A: 不能,Hound只索引文本文件。图片、视频、编译后的文件都不会被索引。
Q: 支持中文搜索吗? A: 支持!中文变量名、注释都能搜索。
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
