Zum Hauptinhalt springen

Volltext-Suche

Die Volltext-Suche wird aktuell für das neue MapEdit Mobile verwendet (>Version 21.1.x). Die Inhalte kommen aus einer Datenbank, die sowohl in Wildfly als auch im AppBuilder für das Mobile-Projekt eingerichtet ist.

Einrichtung

Die Volltext-Suche wird im AppBuilder definiert und wird nach einer Zuweisung zu einem Projekt in MapEdit Mobile angezeigt. Bevor diese jedoch genutzt werden kann, muss sie noch indiziert werden.

Erstellen der Suchdefinition

Eine Volltext-Suche kann unter Suchen -> Volltext-Suche erstellt werden, indem in der Menüleiste oben auf Neu geklickt werden. Anschließend wird ein Name für die Suchdefinition vergeben, so zum Beispiel Wasser. Dieser wird später auch im Client zur Auswahl angezeigt, falls mehrere Suchen für ein Projekt definiert wurden.

Eine Volltext-Suche besteht aus einer beliebigen Anzahl von Kategorien, welche durchsucht werden können (vgl. Suche im MapEdit Portal). So können innerhalb einer Gruppe von Objektklassen nur die Klassen ausgesucht werden, welche in dem Moment benötigt werden. Ein Beispiel hierfür wäre es eine Suche mit dem Namen Wasser zu erstellen, welche auf der Fachschale Wasser basiert. Hierin könnten dann Kategorien wie Leitung, Schacht, Hausanschluss und Hydrant erstellt werden. Anschließend kann in dieser Suchdefinition ein beliebiger Begriff, wie eine Straße oder auch eine ID, eingetragen werden. Die Volltext-Suche antwortet dann mit den Suchergebnissen aufgeteilt nach den definierten Kategorien. Wird anschließend eine der Kategorien ausgewählt, so werden nur noch die Suchergebnisse angezeigt, welche zu dieser Kategorie gehören.

Beispiel

In der oben beispielhaft definierten Suche wird Hauptstraße eingegeben. Die Suche könnte nun damit antworten, dass sie 3 Hydranten, 4 Leitungen und einen Schacht gefunden hat, die das Wort "Hauptstraße" (oder Teile hiervon) in den zu durchsuchenden Feldern enthalten. Wird nun auf die Kategorie Hydrant geklickt, so werden nun nur noch die drei Ergebnisse der Hydranten angezeigt.

Zur Konfiguration der Suche werden demnach Kategorien erstellt. Hierfür klicken Sie unter Kategorien auf Neu.

lunr-categories

EigenschaftFunktion
NameTitel der Kategorie, welcher in der Anwendung angezeigt wird
DatasourceNameDatenbankverbindung, auf die sich die Suche bezieht
QuerySQL-Query, der die zu durchsuchenden Felder enthält. Bitte beachten Sie, dass das Ergebnis des Queries eine Geometriespalte, die FID/einen Primary Key und zwei Textfelder zur Darstellung enthalten muss.
LabelFeld des SQL-Ergebnisses, welches als Hauptlabel des Suchergebnisses dienen soll
SublabelFeld des SQL-Ergebnisses, welches als sekundäres Label des Suchergebnisses dienen soll
FidFeld des SQL-Ergebnisses, welches die FID/einen Primary Key darstellt
GeometryFeld des SQL-Ergebnisses, welches die Geometrie des Objekts enthält
Form (optional)Falls gewünscht, kann hier eine Formulardefinition gewählt werden, welche vom Suchergebnis aus geöffnet werden kann
Anmerkung

Es empfiehlt sich eine View für die zu durchsuchende Kategorie zu erstellen, da der Query so vorab getestet werden kann und die Konfiguration im AppBuilder simpler gestaltet werden kann.

Beispielkonfiguration
EigenschaftInhalt
NameHydranten
DatasourceNameWASSER
QuerySELECT * FROM WA_V_HYDRANT
Labelanlagennummer
Sublabelbaujahr
Fidfid
Geometrygeom
Form (optional)WASSER.WA_V_HYDRANT.DEFAULT

Zuweisen der Suchdefinition

Zur Zuweisung der Suche zu einem Projekt wird die Projektdefinition geöffnet und dort das Untermenü Volltext-Suche. Hier kann über den Button Zuweisen eine Suchdefinition ausgewählt und zugeordnet werden. Anschließend wird die Suche in MapEdit Mobile aufgeführt.

Indizieren der Suche

Die Indizierung der Suche kann sowohl in der Swagger UI als auch in MapEdit Mobile (Web) durchgeführt werden. Für beide Methoden ist es erforderlich sich als Nutzer mit Administratorrechten anzumelden.

MapEdit Mobile (Web)

Sofern der aktuell angemeldete Nutzer Administratorrechte besitzt, befindet sich im Menü der Admin Panel.

admin-panel

In diesem befindet sich unter der Überschrift LunrService ein Textfeld, in welches der Name der Suche (nicht der Kategorie) eingetragen werden muss. In obigem Beispiel würde der Name der Suche Wasser lauten. Über Add wird die Suche hinzugefügt und direkt indiziert. Nach einer kurzen Wartezeit steht die Suche dann vollständig in MapEdit Mobile bereit.

lunr-service

Beispiele

Adressen-Suche (aus ALKIS Daten)

Für die Adressen-Suche in ALKIS wird eine View benötigt, da bei Volltext-Suchen keine kaskadierenden Suchabfragen möglich sind (wie in bei den Standard-Suchen in MapEdit Desktop). Daher werden die benötigten kaskadierenden Abfragen in einer View zusammengefügt.

Beispiel View für Gemeinde/Strasse/Hausnummer aus ALKIS:

CREATE OR REPLACE VIEW V_ALKIS_SUCHE AS
SELECT lmht.FID, g.BEZEICHNUNG as GEMEINDE, gt.BEZEICHNUNG as GEMEINDETEIL, gm. BEZEICHNUNG as GEMARKUNG, lk.BEZEICHNUNG || l.UNVERSCHLUESSELT ||' '||lmh.HAUSNUMMER as ADRESSE , lmht.geom as geom
FROM AX_FLURSTUECK f
LEFT JOIN AX_GEMEINDEKENNZ gk ON f.FID_GEMEINDEZUGEHOERIGKEIT = gk.FID
LEFT JOIN AX_GEMEINDE g ON gk.FID = g.FID_GEMEINDEKENNZEICHEN
LEFT JOIN AX_GEMEINDETEIL gt ON gt.FID_SCHLUESSEL = gk.FID
LEFT JOIN AX_GEM_SCHLUESSEL gs ON f.FID_GEMARKUNG = gs.FID
LEFT JOIN AX_GEMARKUNG gm ON gs.FID = gm.FID_SCHLUESSEL
INNER JOIN REL_LAGBEZHNR_FLST_WEIST rlm ON f.FID = rlm.FID_PARENT
LEFT JOIN AX_LAGBEZMITHNR lmh ON rlm.FID_LAGEBEZEICHNUNGMITHNR = lmh.FID
LEFT JOIN AX_LAGBEZMITHNR_TBL lmht ON lmh.FID = lmht.FID_PARENT
LEFT JOIN AX_LAGEBEZEICHNUNG l ON lmh.FID_LAGEBEZEICHNUNG = l.FID
LEFT JOIN AX_LAGBEZKATALOGEINTG lk ON l.LAND || l.REGIERUNGSBEZIRK || l.KREIS || l.GEMEINDE || l.LAGE = lk.SCHLUESSELGESAMT;

Im AppBuilder wird die Suche wie folgt eingerichtet. Auf Großschreibung ist zu achten:

Adressen-Suche Volltext

In Mobile funktionieren die Volltext-Suchen genauso wie eine Google-Suche. Die Suche wird über das Symbol der Lupe geöffnet und darin werden die im AppBuilder definierten Suchen aufgelistet. Bei der Suche über eine Adresse sollte man auch den Ort mit angeben, denn oft gibt es die Strassennamen in unterschiedlichen Gemeinden. Durch Klick auf ein Ergebnis wird in der Karte an diesen Ort gezoomt.

Adressen-Suche Volltext

Flurstücksuche (aus ALKIS Daten)

Hier die benötigte View für eine Suche nach Fluren und Flurstücksnummern.

create or replace view V_FLST_SUCHE as select
f.fid,
(select BEZEICHNUNG from AX_GEMARKUNG where SCHLUESSELGESAMT in (select LAND || GEMARKUNGSNUMMER from AX_GEM_SCHLUESSEL where FID = f.FID_GEMARKUNG))||' '||FLURNUMMER as Flur,
case
when NENNER is NULL then ZAEHLER
else ZAEHLER || '/' || NENNER
end as Flst,
(select geom from AX_FLURSTUECK_TBL where fid_parent = f.fid and rownum = 1) as GEOM
from AX_FLURSTUECK f;

Die Kategorie kann so im AppBuilder eingerichtet werden:

Kategorie Mobile Suche

Und in Mobile kann man damit über die Gemarkung/Flur und Flurstücksnummer suchen:

Suche Flur Flurstücksnummer

Suche über Objekte aus Netzwerkmodellen

Für die Suche nach Objekten aus einem Utilitymodell kann entweder eine View verwendet werden, welche u.a. die FID- und die GEOM-Spalte beinhaltet. Oder man verwendet die Query, um dort über ein passendes Select die benötigten Felder zu bekommen. Damit spart man sich das Erstellen von Views.

Query Suche