Konfiguration
Die Suche können Sie in <GISX3HOME>/config/searchService.properties konfigurieren.
# Specifies a list of services that should be used for default searches # This defaults to externalsearchservice,housecoordinate,gisx3datastoresearch,lucene preferredServices=externalsearchservice,housecoordinate,gisx3datastoresearch,lucene # Specifies if other services than does defined in 'preferredServices' should be used. # This defaults to 'false' (only use the preferred ones) useOthersThanPreferred=false # Specifies wether or not an external search service can be used. externalServiceEnabled=true # Specifies what type of external search service should be used. # Possible values are: # nominatim - Search by Nominatim # mapzensearch - Search by MapZenSearch # # This defaults to nominatim externalServiceProvider=nominatim # The url to an external search service. # Default value is "http://nominatim.openstreetmap.org/search?q=${searchQuery}&format=json&polygon=0&addressdetails=1&limit=${maxResult}" # Note that within ${searchQuery} the search string send by user is set, and with ${maxResult} the maximum number of features that should be returned. externalServiceURL=http://nominatim.openstreetmap.org/search?q=${searchQuery}+stralsund&format=json&polygon=0&addressdetails=1&limit=${maxResult} # The definition of the output presentation from external service to client. # Default value is "${address\\:pedestrian} ${address\\:road} ${address\\:house_number}, Stadt: ${address\\:town}" externalServiceOutput=${address\\:pedestrian} ${address\\:road} ${address\\:house_number}, Stadt: ${address\\:town}
Parameter | Beschreibung | Standardwert | Neustart erforderlich |
---|---|---|---|
preferredServices | Eine kommagetrennte Liste mit Suchdienstnamen die bevorzugt und der angegebenen Reihenfolge verwendet werden sollen. Dienste die nicht zur Verfügung stehen werden ignoriert. Eine Übersicht verfügbarer Dienste finden Sie weiter unten. | externalsearchservice,housecoordinate,gisx3datastoresearch | Ja |
useOthersThanPreferred | Gibt an ob neben den unter preferredServices angegebenen Suchdienstnamen auch alle anderen durchsucht werden sollen (true oder false). | false (Andere werden nicht durchsucht) | Ja |
externalServiceEnabled | Gibt an ob ein externer Suchdienst (z.B. Nominatim) verwendet werden kann (true oder false). Diese Option ist standardmäßig aus, da derartige Dienste zunächst konfiguriert werden sollten. | false | Nein |
externalServiceProvider | Gibt an welcher externe Suchdienst verwendet werden soll. Zur Verfügung stehen aktuell:
| nominatim | Nein |
externalServiceURL | Die URL zum externen Suchdienst. Diese Angabe erfolgt mit Hilfe eines Templates in das Sie folgende Platzhalter einfügen können:
Die jeweiligen Projektmittelpunkte, Suchradien und Projektgrenzen können Sie an dieser Stelle konfigurieren. | http://nominatim.openstreetmap.org/search?q=${searchQuery}&format=json&polygon=0&addressdetails=1&limit=${maxResult} | Nein |
externalServiceOutput | Die Ausgabe der Suchergebnisse in Form eines Freemarker Templates. Zur Verfügung stehen Ihnen ALLE Eigenschaften der JSON Rückgabe des externen Dienstes. Untergeordnete Elemente des Ergebnisses werden mittels ":" getrennt: { "some": { "value":"foo" } }, ... Der Inhalt von "value" steht Ihnen somit in der Variable "some:value" zur Verfügung und kann mittels "${some\\:value}" angesprochen werden. | Der Standardwert hängt vom Inhalt von externalServiceProvider ab. Bei "nominatim": ${address\\:pedestrian} ${address\\:road} ${address\\:house_number}, Stadt: ${address\\:town} Bei "mapzensearch": ${label} | Nein |
Verfügbare Dienste
In GISX 3 werden mehrere Suchdienste verwendet werden
- gisx3datastoresearch: Suchen in Themen: Durchsucht in der Themendefinition festgelegte Attribute eines Themas. Nähere Informationen zur Konfiguration können Sie in der Themendefinition nachlesen
- housecoordinate: Suche in Hauskoordinaten. Erfordert einigen Installationsaufwand in einer GISX 2.X Datenbank in Oracle (Es muss z.B. ein View erstellt werden)
- externalsearchservice: Suche mit Hilfe von externen Diensten
- lucene: Suche mit Hilfe von Lucene
Standardmäßig wird bei der Eingabe in das Suchfeld in der Oberfläche nur die Themen durchsucht.
Lucene
Lucene ist eine Volltextsuche die sehr performant ist. Damit die Suche verwendet werden kann, muss einerseits "lucene" als Suchprovider eingetragen werden (siehe oben). Andererseits muss ein Index für die durchsuchbaren Daten aufgebaut werden. Dies geschieht vollautomatisch wenn Lucene wie folgt konfiguriert wurde.
Konfiguration
Für die Verwendung von Lucene muss beim Start des Servers die Datei <GISX3HOME>/config/lucene.properties vorhanden sein.
Die Datei enthält aktuell nur einen Eintrag:
home=Pfad zu einem Verzeichnis
Unter "home" ist der vollständige Pfad zu einem Lucene Index anzugeben (z.B. C:/temp/lucene/myinstance). Falls das Verzeichnis noch nicht existiert, wird es von GISX 3 automatisch angelegt.
Von Lucene werden anschließend automatisch alle Themen zum Index hinzugefügt, die durchsuchbar sind. Es werden hierbei alle Spalten indiziert die als Suchspalten gelten. Zusätzlich wird der Ausgabetext der Suche indiziert. Mehr zur Konfiguration von Suchspalten und Suchausgabe finden Sie in der Themendefinition.
Aktualisierung
Vor der erstmaligen Verwendung wird der Lucene Index automatisch von GISX 3 angelegt. Das geschieht im Hintergrund, sie können während dieser Zeit normal weiter arbeiten.
Es wird jedoch notwendig sein, den Index zu aktualisieren:
- Eine Themendefinition hat sich geändert (Durchsuchbare Spalten, Anzeige, Filter etc.)
- Die Daten haben sich geändert (Ein Index gibt immer nur den Datenstand zum Zeitpunkt seiner Erstellung wieder)
Bis auf weiteres müssen Sie in diesem Fall den Suchindex neu erzeugen.
Dies können Sie entweder manuell machen, indem Sie in Ihrem Browser (Vorher bitte als Administrator anmelden) die URL <GISX3URL>/restservice/lucene/task/forceRebuild aufrufen.
Alternativ können Sie auch CURL (Eine Distribution für ihre Betriebssystem finden Sie unter anderem unter https://curl.haxx.se/download.html) verwenden und in Commandskript als regelmässigen Task ausführen:
curl -u <gisx3admin>:<seinPasswort> <GISX3URL>/restservice/lucene/task/forceRebuild
Folgendes Beispiel stößt die Aktualisierung mittels eines Benutzers "admin" (Passwort "123456") auf einem lokalen Server an:
curl -u admin:123456 http://localhost:8080/gisx3/restservice/lucene/task/forceRebuild
Eine Neuerstellung des Indexes findet in beiden Fällen zum nächsten möglichen Zeitpunkt statt (In der Regel innerhalb der nächsten 5 Minuten).
Beachten Sie bitte das eine Neuerstellung mehrere Minuten dauern kann.
Externe Dienste
Nominatim
Nominatim ist der freie Dienst von Open Street Map. Es ist keinerlei Anmeldung zur Verwendung notwendig, allerdings ist die Anzahl der Abfragen stark limitiert (1 pro Sekunde) und daher nur für Testzwecke geeignet.
Nähere Informationen zu Nominatim finden Sie unter http://wiki.openstreetmap.org/wiki/Nominatim
MapZenSearch
MapZenSearch ist im wesentlichen frei zur Nutzung. Weitere Informationen finden Sie unter https://mapzen.com/:
Eine klassische MapZenSearch Konfiguration:
preferredServices=externalsearchservice useOthersThanPreferred=false externalServiceEnabled=true externalServiceProvider=mapzensearch externalServiceURL=https://search.mapzen.com/v1/search?api_key=search-TeXrSTX&text=${searchQuery}&boundary.circle.lat=54.30886&boundary.circle.lon=13.07786&boundary.circle.radius=10 externalServiceOutput=${label}
Beachten Sie bitte dass search-TeXrSTX
ein Test API Key ist, den Sie durch einen eigenen austauschen müssen. Für einen eigenen API Key benötigen Sie einen GitHub Account mit dem Sie sich bei MapZenSearch registrieren können.
Im Beispiel sind ferner alle anderen Suchen außer die externe mittels MapZenSearch deaktiviert.