Wie Solr und Fusion das Flugplanungs-Chaos von American Airlines lösen können
Vor kurzem hat American Airlines zu viele Piloten während der Ferienzeit freigestellt. Das mag Sie überraschen, aber auch dies ist…
Vor kurzem hat American Airlines zu viele Piloten während der Ferienzeit freigestellt. Das mag Sie überraschen, aber auch dies ist ein „Suchproblem“.
Den technischen Bereich verstehen
Wenn Sie sich dies als eine Dokumentendatenbank vorstellen (wie Apache Solr, das Backend von Lucidworks Fusion), gibt es eine bestimmte Anzahl von Feldern, die mit Piloten und eine bestimmte Anzahl von Feldern, die mit Flügen verbunden sind. FAA-Bestimmungen, Arbeitsregeln der Pilotengewerkschaft und Geschäftsregeln legen die Bedingungen fest, aus denen die Abfragen bestehen, die wir an Fusion und damit an Solr weitergeben.
Piloten haben Schichtzeiten, Standorte und Urlaubszeiten. Bei Flügen gibt es Startorte, Startzeiten, Landeorte und Landezeiten.
In Fusion modellieren Sie diese Orte als Solr-Raumtypen wie SpatialRecursivePrefixTreeFieldType und sogar einfache LatLonPointSpatialField. Diese speichern im Wesentlichen die X,Y-Koordinaten der Ebene, der Fläche oder was immer Sie wollen. Solr kann auch Polygone und andere „Formen“ im Raum modellieren.
Für die Datums- und Zeitangaben haben Sie das DateRangeField. Damit können Sie eine contains-, within- oder intersects-Operation durchführen.
Die Regeln verstehen
Die FAA-Vorschriften schreiben unter anderem vor, dass Piloten:
- Haben Sie alle 24 Stunden 10 Stunden Ausfallzeit
- Fliegen Sie nicht länger als 9h
- Nicht im Urlaub sein
Piloten befinden sich in einer Stadt und müssen entweder als Pilot oder als Passagier einen Flug in eine Stadt unternehmen.
Die Geschäftsregeln von American Airlines besagen im Wesentlichen:
- Eine bestimmte Anzahl von Urlaubstagen ist auf der Grundlage der überschüssigen Pilotenkapazität verfügbar.
- Piloten haben aufgrund ihres Dienstalters Vorrang bei der Inanspruchnahme des Urlaubs
Dies in Solr-Typen modellieren
Ein Pilotschema könnte in etwa wie folgt aussehen:
- ID – IntPointField
- Name – Text
- Datum der Einstellung – DateRangeField
- Letzte Verschiebung – DateRangeField
- Aktueller Standort – LatLong
Ein Flugschema könnte in etwa wie folgt aussehen:
- ID – IntPointField
- Modell – IntPointField
- Start – LatLonPointSpatialField
- Ende – LatLonPointSpatialField
- Dauer – DateRangeField
Die verfügbare Urlaubszeit als Schema könnte so aussehen:
- ID – IntPointField
- Datum – DateRangeField
- Number_allowed – IntPointField
Es kann in Blöcken oder einzelnen Terminen erfolgen.
Die „Gebote“ der Piloten für ihren Urlaub könnten folgendermaßen aussehen:
- ID – IntPointField – IntPointField
- Zeit_Zeitraum – IntPointField
- Pilot – IntPointField
Die Umsetzung der Regeln
Die Implementierung besteht eigentlich aus einer Reihe von Suchvorgängen und dem Hinzufügen von Dokumenten zu Sammlungen. Bei der Suche nach einem Piloten kann eine Fusion-Abfrage-Pipeline eingerichtet werden, die den Flug als Argument nimmt, aber eine Solr-Abfrage konstruiert, die im Wesentlichen eine Suche nach dem nächstgelegenen Piloten ist, der noch keine 9-Stunden-Schicht hatte. Wenn kein Pilot in Reichweite gefunden wird, wird eine Abfrage mit größerer Reichweite ausgeführt, die einen Piloten findet, der dorthin geflogen werden kann (was auch eine Unterabfrage für einen verfügbaren Flug beinhaltet).
Für die Entfernungsabfragen sieht es in der Abfragesprache von Solr wie folgt aus: &q=:&fq={!bbox sfield=store}&pt=45.15,-93.85&d=1. Wenn Sie bei 45.15,-93.85 lat,long beginnen und wir davon ausgehen, dass sich dort ein Flughafen befindet, dann können wir innerhalb einer Box mit +1 und -1 (d.h. 44.15 bis 46.16 und -94.85 bis -92.85) suchen. Auf diese Weise können wir herausfinden, ob ein Pilot „nah genug“ ist.
Für die Zeitbereiche sieht die Solr-Abfrage etwa so aus:[2017-12-20T17:30:00.772Z TO 2017-12-20T18:30:00.772Z].
Sie können auch zwei Datumsbereiche mit einer Intersects-, Contains- oder Within-Abfrage vergleichen. In Solr sieht eine Abfrage wie folgt aus: {!field f=Duration op=Contains}[2016-02-02T14:50 TO 2016-02-02T15:00].
Bei Urlaubsangeboten für Piloten haben Sie eine Frist bis zum Einstellungsdatum, das ist alles.
Amerikanisch: Call Me Maybe?
Offensichtlich sind die Regeln komplizierter als in der Presse zu lesen ist. Aber das sind die grundlegenden Probleme, die sie lösen müssen, und Solr ist superschnell und gut dafür geeignet. Außerdem ist Solr erprobt, skalierbar und bietet sowohl hohe Verfügbarkeit als auch Disaster Recovery.
Wenn Sie Fusion auf Solr aufsetzen, können Sie einen Teil der Komplexität dieses Prozesses abstrahieren und sogar die Vorteile der KI nutzen, um fortgeschrittenere Probleme zu lösen. Wenn Sie also dieses Weihnachten in der Schlange stehen, denken Sie an diesen Blog und denken Sie „Verdammt, ich wünschte, sie würden einfach Fusion verwenden, dann würde ich nicht in dieser Schlange stehen!“ Wenn Sie jemand anderes sind, denken Sie darüber nach, welche Probleme Sie haben, die Suchprobleme sein könnten und wie Sie skalierbare, zuverlässige und bewährte Technologie einsetzen könnten, um sie zu lösen!
Wenn Sie bei American Airlines sind, rufen Sie mich vielleicht an, wir können Ihnen helfen. Sie können mich auf der Kontaktseite finden.