perldoc.pl, the alternative perldoc browser, originally leveraged PostgreSQL full text searching. But as I encountered new issues as well as ones I encountered before, I started working to make the search backend swappable.

There are now three search backends available: PostgreSQL, Elasticsearch, and SQLite using the FTS5 extension. While SQLite is of course the simplest to deploy as it requires no setup, I decided against using it for the main perldoc.pl instance as it does not support skipping stopwords, but the backend is now provided so basic search features can be added to a deployment without setting up a database. Additionally, the application can be deployed without any search backend configured, which will just remove the search box and allow viewing of all pages normally.

Elasticsearch is quite complex to set up and utilize correctly in comparison to PostgreSQL, and makes quite a bit more use of server resources to be performant, but almost every aspect of its indexing and searching process is configurable. I often find this flexibility to be important for full text search applications that tend to all have slightly (or wildly) different requirements, and it's always nice to be able to tweak results as needed.

So now that Elasticsearch is in use, be sure to let me know in comments or the issue tracker when a search doesn't find what you hoped.