HomePhabricator
Phabricator Search Backend Changes
Eliminating the dependence on ElasticSearch

Phabricator upstream has implemented a search engine that does not depend on an external full-text index service. It's been the default in Phabricator for quite some time, however, we have been using the ElasticSearch engine for a few years now due to previous issues with the old engine. Specifically, the old phabricator fulltext engine depended on MySQL's built-in fulltext index functionality. Unfortunately, the fulltext engine in MySQL had inconsistent performance and often returned low quality search results.

To avoid using MySQL fulltext, the new Phabricator engine uses SQL joins against specially designed index tables. Surprisingly it works quite well. As of last week we are running fully on the new engine. @brennen and I implemented some missing features to achieve feature parity with the ElasticSearch engine. So far I am happy with the performance and the quality of search results using the new engine. If you notice anything strange in search results please let me know in the comments.

Written by mmodell on Wed, Jul 29, 5:45 PM.
Release Engineer, Phabricator Admin

Event Timeline