GeoNetwork Suche erweitern

Diese Anleitung soll zeigen, wie sich die Suche von GeoNetwork um ein Suchwort oder einen Suchbegriff erweitern lässt.

Sie kann auch dazu verwendet werden, den Lucene-Index auf wenige Suchwörter einzuschränken. Dies führt zu einer schnelleren Index-Generierung und ermöglicht, GeoNetwork mit einer größeren Anzahl von Metadaten zu betreiben.

Das folgende Verfahren wurde mit GeoNetwork 2.6.0 RC2 erprobt.


Aufbau des Lucene-Index
Der Lucene-Index von GeoNetwork kann in drei Gruppen zerlegt werden:

Felder für die Suche nach Metadaten any, title, abstract, …
Felder für Listen (Autocomplete) _title, _abstract, …
Felder für (GeoNetwork) interne Zwecke _op1, _op2, …

 

Aufbau des Lucene-Index

Der Lucene-Index von GeoNetwork kann in drei Gruppen zerlegt werden:

Felder für die Suche nach Metadaten

any, title, abstract, …

Felder für Listen (Autocomplete)

_title, _abstract, …

Felder für interne Zwecke von GeoNetwork

_op1, op2, …

 

Konfiguration des Lucene-Index
Die Konfigurationsdatei gibt an, welche Metadatenelemente indexiert werden sollen.

/geonetwork/web/geonetwork/xml/schemas/iso19139/index-fields.xsl

Das folgende Beispiel zeigt, wie das Metadatenfeld „Metadaten-Standard-Name“ als zusätzliches Feld in die Indexierung aufgenommen werden kann. Das Lucene-Feld erhält den Namen __standardName.

<xsl:for-each select="gmd:metadataStandardName/gco:CharacterString">
    <Field name="__standardName" string="{string(.)}" store="true" index="true" token="true"/>
</xsl:for-each>

Einstellungen für die Indexierung

store Zusätzliche Abspeicherung des Originalwertes
index Ermöglicht das Durchsuchen des Feldes (i. d. R. immer true)
token Zerlegung des Begriffs in so genannte Tokens
(Wortteile – siehe Beispiel unten)


Felder: zerlegt in Token:
• ermöglichen eine freie Suche
• ignorieren Groß- und Kleinschreibung
• Beispiele: Any, Titel, Kurzfassung, …


Felder: nicht zerlegt in Token
• benötigen die exakte Schreibweise bei der Suche
• unterscheiden Groß- und Kleinschreibung
• ideal für Autocomplete-Listen
• Beispiele: Schlüsselwörter, ISO-Themen , …

Aufbau des Lucene-Index

Der Lucene-Index von GeoNetwork kann in drei Gruppen zerlegt werden:

Felder für die Suche nach Metadaten

any, title, abstract, …

Felder für Listen (Autocomplete)

_title, _abstract, …

Felder für interne Zwecke von GeoNetwork

_op1, op2, …

break
Ansicht des Feldes __standardName nicht zerlegt in Token
Bei allen fünf Beispieldatensätzen von GeoNetwork wurde der gleiche Metadatenstandard eingetragen: ISO 19115:2003/19139. Bei diesem Feld (nicht tokenized) wäre nur eine Suche nach exakt diesem String erfolgreich.
GeoNetwork Lucene-Feld nicht tokenized

break
Ansicht des Feldes __standardName zerlegt in Token
Wird das Feld mit der Einstellung token=“true“ erzeugt, zerlegt der Tokenizer den obigen String in:

"iso", "19115", "2003/19139"

Somit wäre eine Suche nach einem Standard-Namen mit dem Suchbegriff „iso“ beispielsweise erfolgreich.
GeoNetwork Lucene-Feld tokenized
break
Mapping Lucene-Index CSW-Schnittstelle
Um das neue Lucene-Index-Feld per CSW Schnittstelle (Catalogue-Service-Web) durchsuchen zu können, muss noch eine Verknüpfung zwischen dem Lucene-Feld und einem CSW-Queryable hergerstellt werden.

Das Mapping zwischen CSW-Queryables und den Feldern im Lucene-Index erfolgt über die Datei:

/geonetwork/WEB-INF/config-csw.xml

Hinzufügen des Feldes __standardName als zusätzliches Suchfeld (AdditionalQueryable)

<parameter name="StandardName"
   field="__standardName" type="AdditionalQueryables" />

Mit folgendem CSW-GetRecords-Request lässt sich das Feld StandardName (Einstellung token=true) durchsuchen:

<?xml version="1.0" encoding="UTF-8"?>
<GetRecords
    xmlns="http://www.opengis.net/cat/csw/2.0.2"
    xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:ows="http://www.opengis.net/ows"
    xmlns:dct="http://purl.org/dc/terms/"
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:gmd="http://www.isotc211.org/2005/gmd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    service="CSW"
    version="2.0.2"
    maxRecords="50"
    startPosition="1"
    resultType="results"
    outputFormat="application/xml"
    outputSchema="csw:IsoRecord"
    xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2  http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd">
    <Query typeNames="gmd:MD_Metadata">
        <ElementSetName typeNames="csw:IsoRecord">full</ElementSetName>
        <Constraint version="1.1.0">
            <ogc:Filter>
                <ogc:PropertyIsLike escapeChar="\" singleChar="?" wildCard="*">
                    <ogc:PropertyName>StandardName</ogc:PropertyName>
                    <ogc:Literal>iso</ogc:Literal>
                </ogc:PropertyIsLike>
            </ogc:Filter>
        </Constraint>
    </Query>
</GetRecords>

Für Fragen oder Anregungen bitte die Kommentarfunktion benutzen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert