White Papers

RediSearch: A High Performance Search Engine as a Redis Module

As search engines become increasingly refined, users have grown to expect the most relevant results for the search terms they input. In order to sufficiently address users’ needs and expectations, Redis Labs developed RediSearch, a full-text search engine that utilizes Redis Modules API to extend Redis with new commands and capabilities.

In order to enable more efficient data encoding, our developers decided to model Inverted Indexes using a custom data structure, rather than Redis’ native data type. An Inverted Index stores a map from words or terms to the respective documents in which they appear, and by modeling this type of index, RediSearch allows modules to designate and subsequently locate data on Redis string keys. This is a simple process, but it yields powerful results.

RediSearch also minimizes the space used for indexes by using a combination of Delta Encoding and Varint Encoding to encode entries; this helps maintain efficient decompression and index traversal rates. As a result of this methodical setup, RediSearch offers a variety of unique features, ranging from rapid indexing and multi-language support to exact phrase search and a powerful auto-suggest engine. Please download our ebook to learn more about RediSearch’s wide range of capabilities.

It is important to know that RediSearch does not rely on any automatic algorithms to determine document quality when delivering search results. Instead, users have the ability to provide their own customized quality scores for each indexed document, which RediSearch then combines with the tf-idf scoring of each word to rank search results. Nonetheless, we’re always working to improve RediSearch, so you can expect more relevance ranking methods to manifest in the future.

In addition to being fast and memory efficient, RediSearch can store documents, index existing Redis data, support numeric range filtering of results, perform query execution using a  chained-iterator based approach, provide stemming for over 15 languages using the Snowball stemming library, auto-complete search terms, and accommodate Fuzzy Suggestions. Moreover, RediSearch can be scaled out and partitioned over multiple machines in the case that an index is too large.

Ultimately, RediSearch is proof that we can create a feature-rich, high-performance search engine on top of Redis using the Redis Modules API. RediSearch outperforms numerous other search engines while simultaneously maintaining lower latencies — and we’re constantly working to enhance its capabilities, making it an ideal resource for the open source community. Please download our ebook to learn more about RediSearch and all of the features it offers.