Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
MetaGer
MetaGer
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 56
    • Issues 56
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 9
    • Merge Requests 9
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • open-source
  • MetaGerMetaGer
  • Wiki
  • wie funktioniert metager

Last edited by Dominik Pfennig Jun 27, 2017
Page history
This is an old version of this page. You can view the most recent version or browse the history.

wie funktioniert metager

MetaGer basiert auf dem PHP-Framework Laravel 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.4

Dies soll einen generellen Überblick über die Struktur geben und erhebt keinen Anspruch auf eine vollständige Beschreibung aller ablaufenden Prozesse:

Eingang des HTTP-Requests /public/index.php

Beim Aufruf von z.B. https://metager.de/meta/meta.ger3?focus=web&eingabe=test&encoding=utf8&lang=all geht die Anfrage auf Grund der .htaccess Datei im Verzeichnis /public/ bei /public/index.php ein.
Zunächst werden hier der User-Agent und die IP-Adresse des Abfragenden anonymisiert, damit auch wir später keinen Zugriff mehr darauf haben. 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/web.php

An dieser Stelle werden die übergebenen Pfade 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 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, sodass es bereits fertig initialisiert übergeben werden kann.
Ab diesem Moment läuft alles relativ > straight forward <

  1. $metager->parseFormData($request)
  • Hier verarbeiten wir alle mit der HTTP-Request übergebenen Parameter. (z.B.: Sucheingabe, Fokus,...)
  1. $metager->checkSpecialSearches
  • Hier überprüfen wir, ob eine besondere Art der Suche (z.B.: Stringsuche,...) durchgeführt werden soll.
  1. $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 die entsprechende HTTP-Request in Auftrag gegeben.
  1. $metager->rankAll()
  • Nun wird das Ranking über alle Ergebnisse durchgeführt.
  1. $metager->combineResults()
  • Die Ergebnisse aller einzelnen Suchmaschinen werden zusammen gefasst und sortiert
  1. return $metager->createView()
  • Die Daten werden gefiltert und es wird daraus ein View erstellt, der schlussendlich zurückgegeben wird.
Clone repository
  • Ideen und Vorschläge für MetaGer
  • Setup Metager
  • aufsetzen einer metager entwicklungsumgebung
  • betrieb einer metager instanz
  • einfuhrung in laravel
  • Home
  • howtoticketsystem
  • laravel elixir setup
  • suchmaschinenubersicht
  • sumas xml
  • usability
  • wie funktioniert metager