The primary components associated with the execution of a search against the Geoportal metadata catalog are depicted in the figure below.
The website search page exposes a service endpoint for metadata discovery. Requests from the page are processed by a SearchController component that, in turn, executes requests through the SearchEngine component.
The website exposes a REST Query API service endpoint for metadata discovery. This service endpoint has the ability to generate GeoRSS, KML, ATOM, JSON, HTML and HTML fragment responses. Requests are parsed by a RestQueryParser component and executed through the SearchEngine component. Any client that can understand RSS, GeoRSS, KML, ATOM, JSON or HTML protocol can utilize this endpoint. Typical clients include: browsers, content management systems, ArcGIS Explorer, and Google Earth.
The website exposes a CSW 2.0.2 Discovery service endpoint for metadata discovery. Any client that understands the CSW 2.0.2 Discovery protocol can query the catalog through this end point. The Geoportal CSW Client components that plug into ArcGIS Explorer and ArcGIS Desktop can utilize this end point. External mapping applications can be configured to utilize this end point.
The SearchEngine component handles inbound requests from the website search page and the exposed Rest Query API end point. Requests targeting the local metadata catalog are transformed to a CSW 2.0.2 discovery XML and submitted to a CSW Discovery Parser for processing. Requests targeting a remote CSW service are submitted and processed by a CSW Client component.
CSW 2.0.2 Discovery requests to the local metadata catalog implement a standardized methodology for processing each request:
- The request is parsed (CSW Discovery Parser), extracting CSW request parameters and OGC filter information. This information is used to build an abstract Discovery Model (package com.esri.Geoportal catalog.discovery)
- The discovery model is sent to a LuceneQueryAdapter that utilizes the Apache Lucene Java API to build and execute a query against the Apache Lucene index. The results are then used to populate resultant component objects of the Discovery Model
- A CSW 2.0.2 Discovery response XML is then generated from the resultant component objects of the Discovery Model