Housaku是一个个人搜索引擎,建立在SQLite的FTS5之上,可让您查询文档,书籍,PDF,最喜欢的供稿等。

Housaku处于早期开发中,因此您可以期望在更新时发生一些不兼容的变化和其他小问题。一旦达到
v1.0.0版本,我的目标是专注于稳定性并避免尽可能多地破坏变化。
.txt , .md , .csv , .pdf , .epub , .docx , .xlsx和.pptx 。对
.odt之类的文件格式的支持也即将到来,并且可能会从Bluesky Feeds和Mastodon索引帖子。
我决定开始在Housaku工作的第一个原因是了解更多有关全文搜索的基础知识以及搜索引擎在引擎盖下的运行方式。实际上,如果您查看提交历史记录,您可以“手动”处理所有解析,令牌化和TF/IDF计算,然后才选择由于性能而选择使用SQLite的FTS5解决方案。
第二个也是最后一个原因是我管理的大量文件。我有大约5,000个在黑曜石中的笔记,在Markdown中格式化,我的口径图书馆中的几百本书,主要是.epub ,大量的PDF和我在UNED的计算机科学学位的PowerPoint演示文稿。此外,我还订阅了很长一段时间的RSS供稿。因此,我想要/需要一种高效,简便的方法来搜索所有这些文档,而不必担心它们所在的位置或以什么格式的细节。
安装Housaku的推荐方法是使用UV:
uv tool install --python 3.13 housaku现在,您只运行:
housaku --help要升级,请使用:
uv tool upgrade housaku
# Or
uv tool upgrade housaku --reinstallpipx要使用pipx安装Housaku,只需运行:
pipx install housaku只需记住,所需的Python的最小版本
>=3.13。
pip您也可以使用PIP安装Housaku,但是确切的命令将取决于环境的设置。在这种情况下,命令应该看起来像这样:
python3 -m pip install housaku在开始使用housaku之前,第一步是编辑位于$XDG_CONFIG_HOME/housaku/config.toml config.toml文件。该文件是在您第一次运行housaku时自动生成的,并且看起来像这样:
# Welcome! This is the configuration file for Housaku.
# Available themes include:
# - "dracula"
# - "textual-dark"
# - "textual-light"
# - "nord"
# - "gruvbox"
# - "catppuccin-mocha"
# - "textual-ansi"
# - "tokyo-night"
# - "monokai"
# - "flexoki"
# - "catppuccin-latte"
# - "solarized-light"
theme = " dracula "
[ files ]
# Directories to include for indexing.
# Example: include = ["/home/<user>/documents/notes"]
include = []
# Patterns to exclude from the indexing
# Example: exclude = ["*.tmp", "backup", "*.png"]
exclude = []
[ feeds ]
# List of RSS/Atom feeds to index
# Example: urls = ["https://example.com/feed", "https://anotherexample.com/rss"]
urls = []保存配置文件以及SQLITE数据库的文件夹由
get_app_dir实用程序确定。您可以在这里阅读更多有关它的信息。
打开config.toml文件的一种简单方法是运行以下命令:
housaku config查看哪些命令的最佳方法是用--help标志运行housaku 。
housaku --help您还可以通过运行来了解有关特定命令的更多信息:
housaku [command] --help
# For example:
housaku index --help config命令是一个非常简单的命令,只需使用默认编辑器打开config.toml文件即可。
housaku config在配置了包含要索引的文档的目录列表以及要获取帖子的提要列表之后,您可以运行:
housaku index要仅索引您的文件,请使用以下命令:
housaku index --include files仅索引您的提要:
housaku index --include feeds您可以指定两个选项以索引文件和馈送在一起,但这相当于简单地运行
index命令而无需任何选项。
您还可以在索引文件和文档时更改所使用的线程数:
housaku index -t 8我的建议是坚持默认的线程数。
目前,使用多线程并行完成索引文件,这使得该过程更快,但也引入了一些并发症。例如,使用ctrl+c取消索引中途会导致某些线程退出,而其他线程将继续在后台运行,然后失败。
search命令开始搜索文档和帖子的最简单方法是使用search命令:
houskau searh --query " Django AND Postgres "您还可以使用--limit选项限制结果数,默认情况下,该选项设置为10:
housaku search --query " Django AND Postgres " --limit 20如果您不使用--query/-q选项指定query则将提示输入一个。
您可以在此处了解有关查询语法的更多信息。
我最喜欢和推荐的搜索方法是使用TUI。要开始,只需运行:
housaku tui要退出TUI,只需按
ctrl + q,然后打开搜索结果,请在突出显示结果时按Enter。
Housaku还具有非常简单的Web UI,您可以通过运行访问:
housaku web
默认端口为
4242。
这种搜索方法有一些局限性。例如,您无法打开链接到本地文档的结果。
vacuum和purge vacuum命令用于通过收回未使用的空间和提高性能来优化SQLite数据库。要运行真空命令,只需执行:
housaku vacuum purge命令用于完全清除数据库中的所有数据。当您要将数据库重置为其初始状态时,此命令很有用。
housaku purge使用这两个命令之前,请小心,因为它们将直接影响您在数据库中持有的数据。
欢迎捐款!如果您有任何建议,请随时打开问题。