Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Index field types
In the index, JSON document representing the metadata is stored.
Simple fields are stored like a map of
key=value. eg.Multilingual text field
Multilingual fields are stored using an object with the following properties:
defaultthe record default language value (this property is updated on the client side based on the UI language)lang{langCode}one or more properties containing all record languages valuesCodelist
Codelists are stored as an object like titles, abstract, ...
If the record is multilingual, codelist translations are stored in the index for the record languages:
When creating a facets on a codelist, 2 options:
if the catalog content is in one language (and there is no need to translate codelist in other language), use the default property eg. cl_spatialRepresentationType.default
if you have a catalog containing a mix of languages without having all records translated in all languages, use the key eg. cl_spatialRepresentationType.key and do translation on the client side. See
GnSearchModule.jsto load extra codelist translations on the Angular app.The second one is also required if you want the codelist to be translated in the user interface language (whatever the record language). The codelist translations are loaded by the application depending on the UI language.
Use the default property in record view. Depending on the UI language, the default property contains the translation in the UI language or fallback to the record default.
Thesaurus
Each thesaurus are described by the following fields:
th_{thesaurusId}Numberwith the count of non empty keywordsth_{thesaurusId}, an array of multilingual keyword which may contains a link (when using Anchor)th_{thesaurusId}_treecontaining hierarchy when broader terms are found.defaultproperty contains the record default language hierarchy,keyproperty contains the hierarchy of broader terms keys. This can be used to build tree depending on UI language (thesaurus translations has to be loaded by the client app).{ "th_httpinspireeceuropaeumetadatacodelistPriorityDatasetPriorityDatasetNumber": "3", "th_httpinspireeceuropaeumetadatacodelistPriorityDatasetPriorityDataset": [{ "default": "Agglomerations - industrial noise exposure delineation (Noise Directive)", "langfre": "Agglomerations - industrial noise exposure delineation (Noise Directive)", "link": "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-IndustrialNoiseExposureDelineation-dir-2002-49" }, { "default": "Agglomerations - noise exposure delineation day-evening-night (Noise Directive)", "langfre": "Agglomerations - noise exposure delineation day-evening-night (Noise Directive)", "link": "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-NoiseExposureDelineationDEN-dir-2002-49" }, { "default": "Designated waters (Water Framework Directive)", "langfre": "Designated waters (Water Framework Directive)", "link": "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/DesignatedWaters-dir-2000-60" } ], "th_httpinspireeceuropaeumetadatacodelistPriorityDatasetPriorityDataset_tree": { "default": [ "Directive 2000/60/EC", "Directive 2000/60/EC^Protected areas (Water Framework Directive)", "Directive 2000/60/EC^Protected areas (Water Framework Directive)^Designated waters (Water Framework Directive)", "Directive 2002/49/EC", "Directive 2002/49/EC^Environmental noise exposure (Noise Directive)", "Directive 2002/49/EC^Environmental noise exposure (Noise Directive)^Agglomerations - industrial noise exposure delineation (Noise Directive)", "Directive 2002/49/EC^Environmental noise exposure (Noise Directive)^Agglomerations - noise exposure delineation (Noise Directive)", "Directive 2002/49/EC^Environmental noise exposure (Noise Directive)^Agglomerations - noise exposure delineation (Noise Directive)^Agglomerations - noise exposure delineation day-evening-night (Noise Directive)" ], "key": [ "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2000-60", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2000-60^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/ProtectedAreas-dir-2000-60", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2000-60^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/ProtectedAreas-dir-2000-60^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/DesignatedWaters-dir-2000-60", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2002-49", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/EnvironmentalNoiseExposure-dir-2002-49", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/EnvironmentalNoiseExposure-dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-IndustrialNoiseExposureDelineation-dir-2002-49", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/EnvironmentalNoiseExposure-dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-NoiseExposureDelineation-dir-2002-49", "http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/EnvironmentalNoiseExposure-dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-NoiseExposureDelineation-dir-2002-49^http://inspire.ec.europa.eu/metadata-codelist/PriorityDataset/Agglomerations-NoiseExposureDelineationDEN-dir-2002-49" ] } }Other types
Index document also contains other types of object for field like:
Aggregations configuration
Some examples:
Simple aggregation on a field:
For codelist, use .default for not multilingual catalogue with one language only UI.
Use .key for codelist for multilingual catalogue. The codelist translation needs to be loaded in the client app. See
GnSearchModule.js.GEMET configuration for non multilingual catalog default property contains the default language so if all records have in the same language there is no mix of languages. In the user interface, this language is displayed.
If records are multilingual, languages are mixed:

GEMET configuration for multilingual catalog. The key is translated on client side by loading required concepts using the thesaurus API.
With the key, french and english translations are considered equivalent:
Aggregation based on queries. One query will define one bucket in the aggregation.
Key like
availableInViewServicemay not be available in the translations. Use the translation API to add your custom translation in the database.To enable filtering in a facet, add an
includeproperty:includeandexcludeproperties can be used to filter values too.Aggregations can be collapsed by default and visible to users depending on roles:
(Experimental) A tree field which contains a URI
eg. http://www.ifremer.fr/thesaurus/sextant/theme#52
but with a translation which contains a hierarchy with a custom separator
/Regulation and Management/Technical and Management Zonations/Sensitive ZonesOther improvements
API changes
Work supported by Ifremer / Sextant.