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
  • sumas xml

Last edited by Karl Hasselbring Sep 22, 2016
Page history

sumas xml

Eine Suchmaschine zur sumas.xml hinzufügen

Die Datei ~/MetaGer/config/sumas.xml enthält Informationen, die zeigen, wie Ergebnisse von einer Suchmaschine abgerufen werden sollen.
In der Regel gibt es einen Link der Form https://example.com/search?q=test&encoding=utf8.
Wenn man diesen Link abruft, liefert die Suchmaschine Ergebnisse für das Suchwort test.

Wir nehmen nun an, dass obiges Beispiel tatsächlich eine Suchmaschine wäre und fügen diese zur sumas.xmlhinzu.

Ich spalte den Link in einzelne Teile auf, die zeigen und erklären in welchem Attribut diese in der sumas.xml angegeben sind:

https://

beginnt der Link mit https:// bedeutet dies, dass die Ergebnisse über eine sichere Verbindung abgerufen werden. Wir setzen hierfür das Attribut port auf 443 und erhalten:
<suma port="443" />

Hinweis: Wenn der Link mit http://beginnt, braucht dieses Attribut nicht gesetzt zu werden, da der dazugehörige Wert "80" als Standardwert gesetzt wird.

example.com

Dies ist der Hostname, der definiert unter welcher Adresse der Server gefunden werden kann.
Wir setzen hierfür das Attribut hostauf example.com und erhalten:
<suma port="443" host="example.com" />

/search?

Dies ist der Pfad zum Skript, welches die Suchanfrage behandeln soll. Wir lassen das ?weg, da es immer vorhanden ist, setzen skript auf /search und erhalten: <suma port="443" host="example.com" skript="/search" />

q=test&encoding=utf8

Dies sind die Argumente, welche an die Suchmaschine übergeben werden sollen. Der Parameter q beinahltet hierbei das Suchwort / die Suchworte und der Paramter encoding ist offensichtlich immer vorhanden.
Für die Suchworte fügen wir den Platzhalter <<QUERY>> ein. Er wird von MetaGer automatisch durch die bei MetaGer eingegebenen Suchworte ersetzt. Beachte bitte, dass die statischen Argumente bereits URL-Enkodiert und der gesamte String XML-Enkodiert sein muss, damit Fehler vermieden werden. Wir setzen also formData auf q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8 und erhalten:
<suma port="443" host="example.com" skript="/search" formData="q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8" />

Parameter name

Dieser Parameter ist nicht optional und muss eine innerhalb der XML-Datei eindeutige Identifizierung enthalten.
Wir wählen also den Namen example und erhalten:
<suma port="443" host="example.com" skript="/search" formData="q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8" name="example" />

Parameter package

Jede Suchmaschine benötigt ein zugehöriges PHP-Skript, welches beschreibt, wie die Ergebnisse aus dem Antwortstring der Suchmaschine extrahiert werden.
Die Antwort kann z.B.: ein XML, oder ein JSON String sein. Alle Parser können unter ~/MetaGer/app/Models/parserSkripte gefunden werden. package beinhaltet den klein geschriebenen Klassennamen des zugehörigen parsers.
Wir nennen unsere Klasse Example und erhalten:
<suma port="443" host="example.com" skript="/search" formData="q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8" name="example" package="example" />

Parameter displayName und Parameter homepage

Jede Suchmaschine (sofern diese vom Benutzer ausgewählt werden kann) taucht automatisch mit einem angezeigten Namen und einer Verlinkung auf deren Home unter localhost:8000/settings auf.
Wir setzen displayName="Example" und homepage="https://example.com" und erhalten:
<suma port="443" host="example.com" skript="/search" formData="q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8" name="example" package="example" displayName="Example" homepage="https://example.com" />

Achtung: Denke daran, dass du nun auch noch die Datei ~/MetaGer/app/Models/parserSkripte/Example.php erstellen musst, um MetaGer mitzuteilen, wie die Antwort der Suchmaschine ausgewertet werden muss.
Tip: Nimm ein anderes Suchmaschinenskript als Vorlage. Du musst lediglich den Dateinamen, den Klassennamen und natürlich den Inhalt der Funktion loadResults() anpassen. Die Variable $result, die der Funktion übergeben wird enthält dabei den ungeparsten Antwortstring der Suchmaschine.


Dies sind alle notwendigen Attribute, damit eine API abgefragt werden kann. Eine übersicht über alle Attribute erhaltet ihr am Ende der Seite.
Hinweis: wenn eure hinzugefügte Suchmaschine bei einer Websuche(Standard) abgefragt werden soll, müsst ihr type="web" setzen.

Die Datei sumas.xml würde nach dem hinzufügen wie folgt aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<sumas>
    <suma port="443" host="example.com" skript="/search" formData="q=&lt;&lt;QUERY&gt;&gt;&amp;encoding=utf8" name="example" package="example" displayName="Example" homepage="https://example.com" />
</sumas>

Mögliche und erforderliche Attribute eines XMl Elements <suma />

name value optional?
name eindeutiger name der Suchmaschine nein
host hostname (www.example.com) nein
skript Pfad zum Skript ("/example.php") nein
formData URL-Parameter, die übergeben werden sollen. (`query=<<QUERY>>`; `<<QUERY>>` wird dabei später durch die Sucheingabe ersetzt nein
package Klassenname der Parser-Datei. (example) nein
displayName Welcher Name soll auf der Settings-Seite angezeigt werden? nein
homepage Unter welchem Link ist diese Suchmaschine für die Öffentlichkeit erreichbar. ( https://example.com; wird dem Benutzer unter "/settings" angezeigt) nein
port Port auf dem die API zuhört (80) ja
inputEncoding Encoding in dem die URL-Parameter übertragen werden (Latin1) ja
userSelectable Soll der Benutzer diese Suchmaschine unter "/settings" auswählen können? [0|1] ( Default: 1) ja
type Gehört diese Suchmaschine zu einem Fokus? [web|bilder|nachrichten|produktsuche] ja
engineBoost Wie hochwertig sind die Ergebnisse dieser Suchmaschine? ( Float 0<Wert ) ja
additionalHeaders Zusätzliche HTTP-Header, die an die Suchmaschine übergeben werden. "$#!#$" wird in "\r\n" umgewandelt. ja
disabled Ist diese Suchmaschine deaktiviert? [0|1] (Default: 0) ja
hasSiteSearch Unsterstützt diese Suchmaschine auf Einzelseiten beschränkte Suchen? [0|1] (Default: 1) ja
cacheDuration Zeit in Minuten, wie lange Suchergebnisse von dieser Suchmaschine Zwischengespeichert werden sollen (Default: 60) ja
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