vcaesar/riot

Go Open Source, Distributed, Simple and efficient Search Engine

What it solves

Riot is a fast, modern text indexing and search engine written in Go. It provides a way to integrate full-text search capabilities into Go applications without needing a separate external search server.

How it works

It functions as a library that allows developers to create indexes of documents containing various field types (text, numeric, date, boolean, IP, geo-points, and vectors). It supports a wide range of query types, including term, phrase, match, prefix, regexp, and fuzzy search, as well as complex boolean logic and range queries. For CJK (Chinese, Japanese, Korean) text, it provides a wrapper that integrates the gse tokenizer for better language-specific indexing.

Who it’s for

Go developers who need a high-performance, embedded search engine for indexing and querying documents within their own application processes.

Highlights

  • Diverse Field Support: Handles text, numeric, date, boolean, IP, geo-points, and vector fields.
  • Advanced Querying: Supports KNN, fuzzy search, regexp, and geo-bounding boxes.
  • ** uma a BM25 Similarity**: Uses BM25 for scoring and similarity, with pluggable interfaces.
  • Built-in Aggregations: Includes bucketing (terms, numeric/date ranges) and metrics (min, max, count, sum, avg, cardinality estimation, and quantile approximation).
  • CJK Support: Dedicated support for Chinese and Japanese text via the gse package.

Related

  • Project
  • Project
  • Project
  • Project