nach oben
indoqa. IT-Experten, die Dinge zu nachhaltigen Lösungen entwickeln.

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

 

Like it? Share it!