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.
You can also participate in regular 4 hour trainings on Elasticsearch Learning to Rank, which support the free work done on this plugin.
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!
See the full list of prebuilt versions and select the version that matches your Elasticsearch version. If you don't see a version available, see the link below for building or file a request via issues.
To install, you'd run a command like this but replacing with the appropriate prebuilt version zip:
./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!
As any other piece of software, this plugin is not exempt from issues. Please read the known issues to learn about the current issues that we are aware of. This file might include workarounds to mitigate them when possible.
Build and Deploy Locally
Notes if you want to dig into the code or build for a version there's no build for, please feel free to run the build and installation process yourself:
./gradlew clean check ./bin/elasticsearch-plugin install file:///path/to/elasticsearch-learning-to-rank/build/distributions/ltr-<LTR-VER>-es<ES-VER>.zip
How to Contribute
For more information on helping us out (we need your help!), developing with the plugin, creating docs, etc please read CONTRIBUTING.md.
Who built this?
- Initially developed at OpenSource Connections.
- Significant contributions by Wikimedia Foundation, Snagajob Engineering, Bonsai, and Yelp Engineering
- 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