Releases: xjodoin/rangefind
Releases · xjodoin/rangefind
Release list
rangefind 0.3.1 — enrich hooks, query CLI, MCP server
Highlights
- Uniform enrichment:
enrich(function or ES-module path, with optionalconfigoverrides) 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. filtersdocs/types corrected to the engine's actual shape.
Full details: https://rangefind.dev/changelog/
rangefind 0.3.0 — geographic index sharding
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,scoringStatsconfig) 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:
scoringStatscomposes withbuild --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:
metablock (attribution/license/generator/data version) in every manifest; OSM ships ODbL defaults. - Release structure: conditional exports with node-only guards, TypeScript declarations,
rangefind/osm/extractAPI.
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
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 --updateadds 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.