Suche verstehen
Eine gute Suche liefert schnell relevante Ergebnisse und unterstützt den Nutzer mit einfachen User-Interfaces. Auch Ihre Suche kann verbessert werden - wir helfen Ihnen dabei.

Korridorsuche mit Apache Solr

Dieser Artikel behandelt Funktionen für Auswertungen entlang einer geographischen Route. Unter dem Begriff “Korridorsuche” in Apache Solr fassen wir Abfragen zusammen, die nach Übergabe der Route als Polyline folgende Eigenschaften einschränken und/oder sortieren können: Distanz und Position. Das Indoqa Spatial Corridor Plugin stellt diese Kennzahlen als Solr Funktionen zur Verfügung. Diese können als Filter oder zur Sortierung verwendet und beliebig kombiniert werden.

 

Solr Korridorsuche Legende

Solr Korridorsuche Legende

Im Detail bedeutet das:

  • Die Route selbst wird bei der Abfrage als WKT LineString übergeben. Sie ist gerichtet von Startpunkt A zum Zielpunkt B.
  • corridorDistance(): Stellt den Normalabstand (=kürzester Abstand) des Suchergebnisses zur Linie dar.
  • corrodorPosition(): Nimmt man jenen Punkt entlang der Route, an dem der kürzeste Weg zum Suchergebnis beginnt, und berechnet dessen Entfernung zum Startpunkt A entlang der Route, erhält man die Position.
OpenSource

Indoqa stellt die Implementierung der Korridorsuche als Solr Plugin zur Verfügung. Einfach die Konfiguration an Ihren Index anpassen und sofort ausprobieren!

Download Plugin von Github

Anwendungsfälle Korridorsuche mit Solr

Mit dem Plugin lassen sich beispielsweise folgende Anwendungsfälle abbilden:

  1. Filter: Liefere alle Ergebnisse, die maximal 10 Kilometer von der Route entfernt liegen.
  2. Sortierung: Reihe die Ergebnisse nach der Entfernung zur Route.
  3. Sortierung: Reihe die Ergebnisse alternativ nach Position entlang der Route.
1) ?q={!corridor field=latLon buffer=2}  // a shortcut for {!frange l=0 u=2}corridorDistance(latLon
)&corridor.route=LINESTRING(16.37039615861895 48.20057128552842, 16.358677998093828 48.19719643770264..

2) ?q=*:*
&sort=corridorDistance(latLon) ASC
&corridor.route=LINESTRING(16.37039615861895 48.20057128552842, 16.358677998093828 48.19719643770264..

3) ?q=*:*
&sort=corridorPosition(latLon) ASC
&corridor.route=LINESTRING(16.37039615861895 48.20057128552842, 16.358677998093828 48.19719643770264..
Solr Korridorsuche Filter

1) Solr Korridorsuche Filter

Solr Korridorsuche Sortierung distance

2) Solr Korridorsuche Sortierung distance

Solr Korridorsuche Sortierung position

3) Solr Korridorsuche Sortierung position