Update wie funktioniert metager authored by Aria Givi's avatar Aria Givi
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.
5. `$metager->combineResults()`
......
......