Skip to content

STELLA Micro-service

The STELLA micro-template provides experimenters with a standardized way to integrate their ranking and recommendation systems into the STELLA infrastructure.

Dockerized Experimental Systems

STELLA supports experimental systems that are integrated as Dockerized microservices.
Each experimental system runs as an independent container and exposes a REST interface that is consumed by the STELLA App at runtime.

Using the microservice-based approach:

  • each system is deployed as its own Docker container
  • systems are integrated directly into the STELLA App via Docker Compose
  • ranking and recommendation results are generated dynamically on request
  • systems can access the full user interaction context

This approach enables:

  • real-time ranking and recommendation
  • interactive experimentation with live user queries
  • richer and more flexible experimental workflows
  • experimentation beyond fixed or pre-defined queries and items

Why the Microservice Template

The STELLA micro-template provides a ready-to-use scaffold that:

  • defines the required API contract
  • standardizes request and response formats
  • simplifies deployment and integration
  • ensures compatibility with the STELLA App and Server

Experimenters are expected to adapt the micro-template to wrap their ranking or recommendation logic and deploy it as a Docker service within the STELLA App environment.

This microservice-based architecture is the only supported mechanism for integrating experimental systems into the STELLA infrastructure.

Ranking

REST endpoint: GET container_name/ranking?query=<string:qstr>&page=<int:pnum>&rpp=<int:rppnum>

Explanation:

  • container_name: name of the container that contains either the baseline or one of the experimental systems
  • query: the query string
  • page: the number of the start page
  • rpp: the number of results per page

Output:

{'itemlist': ['M26721328',
              'M26923455',
              'M25600519',
              'M27515393',
              'M27572122',
              'M27357208',
              'M27309042',
              'M27237391',
              'M27279275',
              'M26813237',
              'M27049797',
              'M27531820',
              'M27338346',
              'M27999240',
              'M26613600',
              'M27356552',
              'M27783754',
              'M27278100',
              'M27531823',
              'M26860287'],
 'num_found': 20,
 'page': 0,
 'query': 'vaccine',
 'rpp': 20}

Explanation:

  • itemlist: a list containing the document identifiers
  • num_found: the total number of documents found for the given query
  • page: the number of the start page
  • query: the query string
  • rpp: the number of results per page

Recommendation

REST endpoint: GET container_name/recommendation/datasets?itemid=<string:itemidstr>&page=<int:pnum>&rpp=<int:rppnum>
GET container_name/recommendation/publications?itemid=<string:itemidstr>&page=<int:pnum>&rpp=<int:rppnum>

Explanation:

  • container_name: name of the container that contains either the baseline or one of the experimental systems
  • datasets/publications: specify if datasets of publications should be recommended
  • itemid: the target item of the recommendations
  • page: the number of the start page
  • rpp: the number of results per page

Output:

{'itemid': 'M26923455',
 'itemlist': ['M27852061',
              'M26673108',
              'M27894536',
              'M27293030',
              'M27133708',
              'M26841192',
              'M27144310',
              'M27353833',
              'M27287107',
              'M27658597'],
 'num_found': 10,
 'page': 0,
 'rpp': 10}

Explanation:

  • itemid: the target item of the recommendations
  • itemlist: a list containing the document identifiers
  • num_found: the total number of documents found for the given query
  • page: the number of the start page
  • rpp: the number of results per page