Nordlys is based on a multitier architecture with three layers:
The core tier provides basic functionalities and is conneted to various the third-party tools. The functionalities include:
- :doc:`Retrieval <api/nordlys.core.retrieval>` (based on Elasticsearch)
- :doc:`Storage <api/nordlys.core.storage>` (based on MongoDB)
- :doc:`Machine learning <api/nordlys.core.ml>` (based on scikit-learn)
- :doc:`Evaluation <api/nordlys.core.eval>` (based on trec-eval)
Additionally, a separate :doc:`data <api/nordlys.core.data>` package is provided with functionality for loading and preprocessing standard data sets (DBpedia, Freebase, ClueWeb, etc.).
It is possible to connect additional external tools (or replace our default choices) by implementing standard interfaces of the respective core modules.
The core layer represents a versatile general-purpose modern IR library, which may also be accessed using command line tools.
The logic tier contains the main business logic, which is organized around five main modules:
- :doc:`Entity <api/nordlys.logic.entity>` provides access to the entity catalog (including knowledge bases and entity surface form dictionaries.
- :doc:`Query <api/nordlys.logic.query>` provides the representation of search queries along with various preprocessing methods.
- :doc:`Features <api/nordlys.logic.features>` is a collection of entity-related features, which may be used across different search tasks.
- :doc:`Entity retrieval <api/nordlys.logic.er>` contains various entity ranking methods.
- :doc:`Entity linking <api/nordlys.logic.el>` implements entity linking functionality.
The logic layer may not be accessed directly (i.e.,as a service or as a command line application).
The services tier provides end-user access to the toolkit’s functionality, throughout the :doc:`command line <cmd_usage>`, :doc:`API <restful_api>`, and :doc:`web interface <web_gui>`. Four main types of service is available: