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
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.
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 GithubAnwendungsfälle Korridorsuche mit Solr
Mit dem Plugin lassen sich beispielsweise folgende Anwendungsfälle abbilden:
- Filter: Liefere alle Ergebnisse, die maximal 10 Kilometer von der Route entfernt liegen.
- Sortierung: Reihe die Ergebnisse nach der Entfernung zur Route.
- 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..

1) Solr Korridorsuche Filter