treesearch 1.0.6

Structure-aware document search CLI. Fast keyword matching over hierarchical document trees.
Documentation

TreeSearch Rust CLI

treesearch is a fast, structure-aware document search CLI built with Rust. It indexes files into a local SQLite FTS5 database and searches by document structure instead of chunking text into arbitrary fragments.

This crate publishes the ts executable.

Install

cargo install treesearch
ts --help

Prebuilt binaries are also published on GitHub Releases:

  • Linux: x86_64-unknown-linux-gnu
  • macOS Intel: x86_64-apple-darwin
  • macOS Apple Silicon: aarch64-apple-darwin
  • Windows: x86_64-pc-windows-msvc

Release page:

https://github.com/shibing624/TreeSearch/releases

Why TreeSearch

  • No embeddings
  • No vector database
  • No chunk splitting
  • SQLite FTS5 with persistent local indexes
  • Structure-aware retrieval for Markdown, text, code, HTML, and more

Quick Start

Search the current directory with the default auto mode:

ts "How does auth work?" .

Build the index explicitly:

ts index .

Inspect index stats:

ts stats .

Search Modes

ts supports three search modes:

  • auto: default mode, automatically selects flat or tree
  • flat: force FTS-style flat retrieval
  • tree: force tree traversal retrieval

Examples:

ts "query" .               # auto (default)
ts "query" . --mode flat   # force flat
ts "query" . --mode tree   # force tree

In auto mode, TreeSearch uses the same three-layer decision logic as the Python version:

  1. Source type mapping: file types that benefit from tree search are marked explicitly.
  2. Depth verification: only documents with real structure depth are treated as hierarchical.
  3. Ratio threshold: if enough indexed documents benefit from tree mode, use tree; otherwise use flat.

Commands

ts [OPTIONS] [QUERY] [PATH]
ts search <QUERY> [PATH]
ts index [PATH]
ts stats [PATH]

Useful options:

  • --mode auto|flat|tree
  • --format tty|json|plain
  • --json
  • --follow
  • -n, --max-results <N>

Output Formats

  • tty: colored terminal output
  • json: machine-readable JSON output
  • plain: plain text output

Documentation

License

Apache-2.0