neighbourhoodie-nnh-logo

CouchDB 3.4.1 New Feature Nouveau posted Monday, September 23, 2024 by The Neighbourhoodie CouchDB Team

Nouveau is a from-scratch reimplementation of Lucene fulltext search for CouchDB. While in beta, this aims to replace CouchDB’s existing fulltext search option Clouseau / CouchDB Search in the near future.

Introduction

Normally, it is preferable to gradually upgrade existing software instead of restarting from scratch, but in this case, a from-scratch reimplementation was needed for a number of reasons:

  1. Maintainability: Clouseau is implemented in Scala, using Scalang, an-Erlang-node compatibility layer that has not been maintained for a long time. Scala is not as ubiquitous as Java, so finding folks who can maintain this and Scalang being effectively EOL meant Clouseau is stuck on ancient Java versions (8) and old Lucene versions.
  2. Performance: Nouveau is a from-scratch reimplementation in modern Java, using modern best-practices and harnessing latest performance optimisations in Lucene and the JVM itself.
  3. Features: Being bound to an old Lucene version also means not being able to use latest Lucene features. Nouveau fixes all this.

What do I need to know?

This is a beta release, but it has undergone a good amount of testing already. Should you find any issues, do report them to us or the CouchDB project directly.

The updated Lucene version means that both the search syntax and the design doc API has slightly changed.

You can run Clouseau and Nouveau in parallel to try things out without committing fully and to gradually transition after testing.

What should I do?

If you are building out new fulltext functionality, start with Nouveau.

If you are using Clouseau already, know that if you are not willing or able to migrate at this point, it is safe to stay with Clouseau for the moment.

Getting Started

If you have any questions, do get in touch.