Skip to content

XiaoMi/linden

Folders and files

NameName
Last commit message
Last commit date
Dec 28, 2016
Dec 28, 2016
May 10, 2021
Aug 15, 2018
Aug 15, 2018
Aug 15, 2018
May 10, 2021
Apr 1, 2022
Aug 15, 2018
Aug 15, 2018
Aug 15, 2018
Aug 15, 2018
Aug 15, 2018
Feb 22, 2017
Dec 28, 2016
Dec 28, 2016
Dec 28, 2016
Dec 28, 2016
Feb 22, 2017
Dec 28, 2016
Oct 13, 2020

Repository files navigation

Linden

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

  • git clone https://github.com/XiaoMi/linden.git
  • cd to root directory of linden source code
  • $ mvn clean package -DskipTests
  • $ sh ./bin/start-zk-server.sh & or run > .\bin\start-zk-server.cmd in windows OS
  • $ sh ./bin/start-linden-server.sh demo/cars/conf/ or run > .\bin\start-linden-server.cmd  demo/cars/conf/ in windows OS
  • Play the demo at http://localhost:10000

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 HTTP API

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.

Developers

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