Skip to content

Releases: xjodoin/rangefind

rangefind 0.3.1 — enrich hooks, query CLI, MCP server

Choose a tag to compare

@xjodoin xjodoin released this 14 Jul 14:25

Highlights

  • Uniform enrichment: enrich (function or ES-module path, with optional config overrides) works identically across the CLI (--enrich), the Eleventy/Astro/Docusaurus plugins, and mkdocs-rangefind — add embeddings or metadata to any crawl. Semantic search on rangefind.dev is built with it.
  • Query CLI: rangefind search|suggest|count|info <index> over any local or remote index — facets, filters, geo, shard scoping, JSON output.
  • New package — rangefind-mcp: an MCP server exposing any index as agent tools (search, autocomplete, counts, metadata) built on the official SDK.
  • <rangefind-search> searchOptions.transform: async per-query hook enabling hybrid semantic search in the component.
  • Crawled sites now index deep body vocabulary (targetPostingsPerDoc: 128) and build a title autocomplete lexicon by default.
  • filters docs/types corrected to the engine's actual shape.

Full details: https://rangefind.dev/changelog/

rangefind 0.3.0 — geographic index sharding

Choose a tag to compare

@xjodoin xjodoin released this 14 Jul 03:51

Geographic index sharding

Index a corpus as independently built and updated geographic shards that federate into one engine at query time — the planet-scale OSM path. Highlights:

  • Exact cross-shard scoring: a frozen scoring-stats artifact (rangefind/scoring-stats, scoringStats config) makes a sharded index reproduce the monolithic build's rankings exactly.
  • Sharded roots + runtime federation (rangefind/shards): lazy shard engines, bbox geo routing, expanding nearest-first, merged text/geo/sort/facet/suggest/vector/hybrid lanes.
  • Incremental shard updates: scoringStats composes with build --update; a delta generation is proven identical to a full rebuild.
  • Multi-level scoping: shards: ["canada"] resolves shard ids or group labels; hierarchical roots compose.
  • Provenance: meta block (attribution/license/generator/data version) in every manifest; OSM ships ODbL defaults.
  • Release structure: conditional exports with node-only guards, TypeScript declarations, rangefind/osm/extract API.

See docs/sharded-osm.md for the architecture, benchmarks (Québec, 6.1M places), and planet workflow. Full details in the CHANGELOG.

v0.2.0

Choose a tag to compare

@xjodoin xjodoin released this 06 Jul 17:41

The "full search product" release: geo, autocomplete, semantic hybrid, facet counts, highlighting, and incremental publishing — all static, all over HTTP range requests.

Live demos: https://xjodoin.github.io/rangefind/

Added

  • Geo queries (Lucene LatLonPoint-class, adapted to range requests): bounding-box and radius filters, exact nearest-neighbor distance sort with early-stop proofs, text+geo filtering, and distance boosts. Verified against exhaustive oracles at 175k and 4.27M points.
  • Search-as-you-type autocomplete: a prefix-sorted suggestion sidecar with per-page weight proofs and precomputed hot pages — a first keystroke is ~2 requests / ~13 KB at 4.27M docs.
  • Hybrid semantic search: an int8 IVF vector index with reciprocal-rank fusion against the text lane; full-probe recall@10 = 0.98 against brute force.
  • Per-query facet counts with exact-or-flagged semantics.
  • Snippets and highlighting, analyzer-consistent.
  • Incremental publishing (Phase 1): rangefind build --update adds delta generations; unchanged pack bytes keep their CDN cache entries and scores stay comparable across generations.
  • OpenStreetMap map demo and semantic search in the wiki example.

Fixed

  • The minimal example page loaded a source path that doesn't exist on static deploys.
  • Posting shard parsing could misalign on block-filter summaries without a manifest.

See CHANGELOG.md for the full list.