Linden Logo

Linden is a distributed and real-time search system built on top of Lucene. Linden is widely used in Xiaomi. Linden provides a SQL-like query language interface named BQL(Browsing Query Language). BQL is simple and straightforward. Linden provides a very simple way to tune search result rankings. You can pass a piece of JAVA scoring code or even a scoring plugin class name in your query. Linden also supports customizing scoring logic from low index level via linden flexible query, you can get each query term match information(position, frequency and score), so that you can make a very intuitive scoring logic. This is very convenient for beginners.

Get Started

Please see more in Linden Demo Document.

Linden Overview

Please see Linden Overview Document.

Linden Schema

Linden has a static schema file to specify document field property(name, type, index, store, etc.). Linden also supports dynamic field schema. See more in Linden Schema Document.

BQL Introduction

Please see BQL Document.

Linden Flexible Query

Please see Linden Flexible Query Document.

Linden Work Mode

Linden has 3 work modes for different scenarios: simple mode, hot-swap mode and multi-core mode. See more Linden Work Mode Document.

Linden Plugin

Linden provides user the ability to rewrite some linden component in plugin mode, for example Analyzer, Merge Policy, Metric Manager, Index Warmer and Similarity. See more in Linden Plugin Document.

Linden Client

Linden provides a java client, see detail in Linden Client Document.


Linden also provides RESTful HTTP API, see detail in Linden HTTP API Document.

Linden Performance

We have done a simple perf test, see detail in Linden Performance Test Document.

Linden Configuration

Please see Linden Properties Document.


Yonghui Zhao (@yozhao), Yang Li (@philolee), Aibao Luo (@roaporl), Xing Wang (@intergret), Bin Qin (@whuqin), Hucheng Huang (@kenghuang)