Overview of current search implementations

Hi everyone

I’m attempting to create an overview of current search implementations, mainly to sort my thoughts for deciding which one to use in ongoing projects. Furthermore, it might be helpful for others.

Flowpack.Elasticsearch

The “classic search stack” for Neos, based on Elasticsearch. Indexes all nodes (not only Document nodes) into Elasticsearch which can be an expensive task if there are many nodes. On the other hand, makes custom search or filtering tasks easy to implement because all nodes can be queried at a good performance.

Supports asset indexing.

Project status

  • Developed by the Neos community
  • Compatible with current versions of Neos and Elasticsearch
  • Considered by some as being too complex

Sandstorm.LightweightElasticsearch

The Neos 7/8 version is a more lightweight implementation of Elasticsearch, described by the authors as a “hack”. The Neos 9 version is a rewrite without Flowpack dependencies.

In contrast to Flowpack.Elasticsearch, it is only for fulltext search, meaning that document nodes are indexed as fulltext. Supports Elasticsearch 7+ and Opensearch 2.9+. Supports asset indexing.

Project status

  • Developed by Sandstorm and some individual contributors
  • Compatible with current versions and Neos 9
  • Seems to be a good choice if the requirement is to have a “normal” website search.

Sandstorm.KISSearch

Is a MySQL 8/MariaDB 10.6 WIP package for a “dependency-free” Neos search, using fulltext capabilities of SQL. Looks quite flexible, but still WIP.

Project status

  • Work in progress by Sandstorm
  • Compatible with current versions of Neos

Medienreaktor.Meilisearch

A Meilisearch implementation for Neos inspired by the Flowpack packages.

Does not support asset indexing (yet) and has no autocomplete/autosuggest because this is not yet supported by Meilisearch.

Project status

  • Developed by Medienreaktor
  • Compatible with current versions of Neos

Taking a decision

For a classic website and document search on a website, I would currently tend to using Sandstorm.LightweightElasticsearch. Its v9 version looks as if it would become the successor of the Flowpack packages. It is more lightweight (only indexing document nodes) which is good for performance and supports asset indexing.

What do you think? Did I forget other solutions?

3 Likes