A Rust-based search platform for document indexing and full-text + faceted search, with versioned schema support and real-time scoring.
Unlike traditional engines that rely solely on precomputed sort fields, Listtech supports online document ranking using arbitrary scoring expressions, evaluated at query time.
For example, the engine can sort over 700,000 classifieds in under 200 ms using expressions like:
-ln(price + 1) - 10 * exp(-0.01 * ((now_ms() - published_ms) / 86400000))
This makes it ideal for marketplaces, catalogs, or ML-powered relevance experiments — where ranking logic must be dynamic and testable without reindexing.
See: Scalable Online Ranking: From Scoring Expressions to ML Models
Download the dataset from Kaggle or the UCSD website: https://cseweb.ucsd.edu/~jmcauley/datasets/amazon_v2/ (For example, use the Electronics metadata)
Place the file meta_Electronics.json
into the ./data/
directory:
project-root/
├── data/
└── meta_Electronics.json
cargo run -p indexer
cargo run -p searcher --release
make add_schema
make ingest
This will:
- Register the active schema
- Initialize the index directory
- Send documents from
meta_Electronics.json
to the indexer
make select
This performs a search request from script via HTTP using JSON (CBOR is also supported).
data/
– input JSON documents and generated search indexesindexer/
– indexing component (schema registration, auto-commits)searcher/
– search component (query parsing, facets, sorting)scripts/
– helper scripts for schema setup and ingestion
- Rust 1.76 or later
- GNU Make
This project is licensed under the Business Source License 1.1 (BSL-1.1).
- Commercial use is not permitted until the change date.
- On June 1, 2029, the license will automatically convert to Apache License 2.0.
- You may use, modify, and share this code for non-commercial purposes until then.
- To use this software in a commercial or production environment before the change date, a separate license must be obtained from the author.
See the LICENSE.md file for full terms.
Third-party components and their licenses are listed in third_party_licenses.md.