Skip to content

Search Platform Framework

Eric Pugh edited this page Apr 29, 2020 · 3 revisions

RRE is not tied to a specific search platform. That's the reason we have built an abstraction layer for defining the expected callback a search platform must have, in order to be integrated within an RRE evaluation process.

The current release includes two bindings, which are the most popular search platforms: Apache Solr and Elasticsearch. We're setting up the Maven repository for hosting as much versions as possible. See below for an updated list of supported versions.

If you want to implement a new search platform binding, the first place where your should have a look is the rre-search-platform module. It consists of (at time of writing) four modules:

  • rre-search-platform-api: search platform abstraction layer
  • rre-search-platform-elasticsearch-impl: Elasticsearch binding (both internal and external Elasticsearch implementations)
  • rre-search-platform-solr-impl: Apache Solr binding
  • rre-search-platform-external-solr-impl: Apache Solr binding for connecting to an external Solr server/cluster.

The first module provides the actual abstraction layer, which consists of a couple of classes (actually a class and an interface):

  • SearchPlatform: the search platform abstraction which provides the expected callbacks.
  • QueryOrSearchResponse: the class which encapsulates the search results plus some metadata.

The other modules are the already implemented binding, and maybe it could be useful to have a look at them, if you're thinking to bind a new platform.

Creating your own Search Adapter

The generic search API provides the option to connect to search APIs other than Solr or Elasticsearch (for example, a web application in front of Solr, Elasticsearch, or another search platform). To take advantage of this you will need to build your own adapter from RRE to your search API, which is then used by the Generic search plugin.

Further information is available in the plugin directory in the repository.