Linden
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)