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.
- 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 Linden Overview Document.
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.
Please see BQL Document.
Please see Linden Flexible Query Document.
Linden has 3 work modes for different scenarios: simple mode, hot-swap mode and multi-core mode. See more Linden Work Mode Document.
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 provides a java client, see detail in Linden Client Document.
Linden also provides RESTful HTTP API, see detail in Linden HTTP API Document.
We have done a simple perf test, see detail in Linden Performance Test Document.
Please see Linden Properties Document.
Yonghui Zhao (@yozhao), Yang Li (@philolee), Aibao Luo (@roaporl), Xing Wang (@intergret), Bin Qin (@whuqin), Hucheng Huang (@kenghuang)