MetaGer basiert auf dem PHP-Framework [Laravel](https://www.laravel.com/)
Im folgenden wird der Weg einer Suchanfrage von Eingang des HTTP-Requests bis zum Zurücksenden der Ergebnisseite beschrieben, um eine kurze Einführung zu geben.
Dabei kratze ich nur an der Oberfläche des Frameworks selbst. Für eine genaue Dokumentation besuche [https://www.laravel.com/docs/5.2](https://www.laravel.com/docs/5.2)
Dabei kratze ich nur an der Oberfläche des Frameworks selbst. Für eine genaue Dokumentation besuche [https://www.laravel.com/docs/5.4](https://www.laravel.com/docs/5.4)
Dies soll einen generellen Überblick über die Struktur geben und erhebt keinen Anspruch auf eine vollständige Beschreibung aller ablaufenden Prozesse:
...
...
@@ -10,19 +10,19 @@ Zunächst werden hier der User-Agent und die IP-Adresse des Abfragenden anonymis
Als nächstes werden alle benötigten Klassen vom `Laravel-Classloader` geladen, damit dies später nicht mehr passieren muss.
Nun müssen noch die Abhängigkeiten aufgelöst und die Einstellungen geladen werden. Dieser Prozess instanziert das Objekt `App`.
### Verarbeitung des aufgerufenen Pfades `/app/http/routes.php`
An dieser Stelle werden die übergebenen [Pfade](https://www.laravel.com/docs/5.2/routing) verarbeitet und entschieden auf welche Art die Anfrage beantwortet werden soll.
### Verarbeitung des aufgerufenen Pfades `/app/http/web.php`
An dieser Stelle werden die übergebenen [Pfade](https://www.laravel.com/docs/5.4/routing) verarbeitet und entschieden auf welche Art die Anfrage beantwortet werden soll.
Dabei gibt es etliche Möglichkeiten, z.B.:
1. Kann direkt ein View zurückgegeben werden
2. Kann die Funktion eines Controllers aufgerufen werden, welcher widerum am Ende einen View zurück gibt. Alle Controller befinden sich dabei unter `/app/Http/Controllers`
3. Kann zusätzlich eine Middleware definiert werden, also ein Programm welches ausgeführt werden soll nachdem die Anfrage angenommen wurde, aber bevor diese verarbeitet wird.
In unserem Fall für den Pfad `/meta/meta.ger3` ist dort definiert, dass im [Controller](https://www.laravel.com/docs/5.2/controllers)`MetaGerSearch` die Funktion `search` aufgerufen wird.
In unserem Fall für den Pfad `/meta/meta.ger3` ist dort definiert, dass im [Controller](https://www.laravel.com/docs/5.4/controllers)`MetaGerSearch` die Funktion `search` aufgerufen wird.
### Die eigentliche Suche `/app/Http/Controllers/MetaGerSearch.php`
Laut Funktion wird an diese ein Objekt der Klasse `Request` und eins der Klasse `MetaGer` übergeben.
Das `MetaGer` Objekt ist dabei definiert als [Service Provider](https://www.laravel.com/docs/5.2/providers), sodass es bereits fertig initialisiert übergeben werden kann.
Das `MetaGer` Objekt ist dabei definiert als [Service Provider](https://www.laravel.com/docs/5.4/providers), sodass es bereits fertig initialisiert übergeben werden kann.
Ab diesem Moment läuft alles relativ > straight forward <
1.`$metager->parseFormData($request)`
...
...
@@ -30,7 +30,7 @@ Ab diesem Moment läuft alles relativ > straight forward <
2.`$metager->checkSpecialSearches`
* Hier überprüfen wir, ob eine besondere Art der Suche (z.B.: Stringsuche,...) durchgeführt werden soll.
3.`$metager->createSearchEngines()`
* Je nach Sucheinstellung werden entsprechende `Searchengine-Objekte` aus dem Verzeichnis `/app/Models/parserSkripte/` erstellt. Gleichzeitig wird, nachdem das Objekt fertig erstellt wurde, per [Dispatch](https://www.laravel.com/docs/5.2/queues#pushing-jobs-onto-the-queue) die entsprechende HTTP-Request in Auftrag gegeben.
* Je nach Sucheinstellung werden entsprechende `Searchengine-Objekte` aus dem Verzeichnis `/app/Models/parserSkripte/` erstellt. Gleichzeitig wird, nachdem das Objekt fertig erstellt wurde, per [Dispatch](https://www.laravel.com/docs/5.4/queues#pushing-jobs-onto-the-queue) die entsprechende HTTP-Request in Auftrag gegeben.
4.`$metager->rankAll()`
* Nun wird das Ranking über alle Ergebnisse durchgeführt.