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

天天

发布于232天前
龙猫也是猫
你是不是经常遇到这样的场景:明明记得写过某个功能,但就是找不到在哪个文件里?或者接手一个大项目,想找某个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](https://dl.playground.lazycat.cloud/guidelines/496/53078588-cc48-4425-aa06-38ce0d535f76.png "image.png")

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

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/38bcfae5-4e54-4081-9157-812777939138.png "image.png")

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

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/14f55587-fe8e-47d1-8bad-bf64271925ea.png "image.png")

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

### 基础配置:索引单个仓库

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

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/cc99cfa6-8748-4787-9d1a-62b648e29717.png "image.png")

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

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/0b597ca1-5101-4d2c-a972-fd88e015034a.png "image.png")

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

重启后可以看到效果了:
![image.png](https://dl.playground.lazycat.cloud/guidelines/496/47284b47-c717-4043-9851-fe560ae7baaf.png "image.png")

### 进阶配置:管理多个项目

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

```json
{
  "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密钥(推荐)

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

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

#### 使用访问令牌

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

```json
{
  "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](https://dl.playground.lazycat.cloud/guidelines/496/7de7fd29-452a-4755-86e5-558147c4e925.png "image.png")

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

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

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

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

![image.png](https://dl.playground.lazycat.cloud/guidelines/496/514711b1-76c6-4902-ae93-543cb7faacf3.png "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

评论

0

暂无评论

说点什么呢~
收藏
0
0
0