The Elasticsearch Learning to Rank plugin uses machine learning to improve search relevance ranking. It's powering search at places like Wikimedia Foundation and Snagajob!
What this plugin does...
- Allows you to store features (Elasticsearch query templates) in Elasticsearch
- Logs features scores (relevance scores) to create a training set for offline model development
- Stores linear, xgboost, or ranklib ranking models in Elasticsearch that use features you've stored
- Ranks search results using a stored model
Where's the docs?
We recommend taking time to read the docs. There's quite a bit of detailed information about learning to rank basics and how this plugin can ease learning to rank development.
I want to jump in!
If you want to just jump in, go straight to the demo. The demo uses Ranklib, a relatively straightforward Java Learning to Rank library, to train models. Follow the directions in the demo README, edit code, and have fun!
To install, you'd run a command such as:
./bin/elasticsearch-plugin install http://es-learn-to-rank.labs.o19s.com/ltr-1.0.0-es6.1.2.zip
(It's expected you'll confirm some security exceptions, you can pass
elasticsearch-plugin to automatically install)
If you already are running Elasticsearch, don't forget to restart!
Notes if you want to dig into the code or build for a version there's no build for.
1. Build with Gradle Wrapper
./gradlew clean check
This runs the tasks in the
esplugin gradle plugin that builds, tests, generates a Elasticsearch plugin zip file.
2. Install with
./bin/elasticsearch-plugin install file:///path/to/project/build/distributions/ltr-<LTR-VER>-es<ES-VER>.zip
Who built this?
- Initially developed at OpenSource Connections.
- Significant contributions by Wikimedia Foundation, Snagajob Engineering, and Bonsai
- Thanks to Jettro Coenradie for porting to ES 6.1
Other Acknowledgments & Stuff To Read
- Bloomberg's Learning to Rank work for Solr
- Our Berlin Buzzwords Talk, We built an Elasticsearch Learning to Rank plugin. Then came the hard part
- Blog article on How is Search Different from Other Machine Learning Problems
- Also check out our other relevance/search thingies: book Relevant Search, projects Elyzer, Splainer, and Quepid