De:WordPressWidget

Aus YaCyWiki
Wechseln zu: Navigation, Suche

YaCy-Portalsuche und Einbindung in dynamischem HTML

Ab Version 0.8 beinhaltet YaCy die Portalsuche, ein Javascript das in eine beliebige HTML-Seite eingebunden werden kann und ein Live-Suchfenster über die aufrufende Seite legt. Die Suche wird bei jedem Tastendruck in einem Eingabefeld ausgeführt, und die Ergebnisse dann aktualisiert angezeigt. Der Sinn einer Portalsuche ist es die YaCy-Suche anbieten zu können ohne dass der abgefragte YaCy-Peer direkt auf dem Portalserver installiert ist. Man kann dieses Script entweder manuell in eine HTML-Seite einbinden und mit einem beliebigen Eingabefeld verknüpfen, oder man benutzt Plugins für die gängigen Internetportale. Am Beispiel von Wordpress soll gezeigt werden wie man ein solches Plugin einfach realisieren kann.

Die Funktionsweise

Ein HTML-Eingebefeld wird durch das Script bei Benutzereingaben ausgelesen und der aktuelle Inhalt als Suchanfrage an einen beliebigen Peer gesendet. Dieser stellt Suchergebnisse bereit um sie vom Script auslesen und anzeigen zu lassen.

Der Script-Aufruf und die Konfiguration

<script src="/yacy/ui/js/jquery-1.3.1.min.js" type="text/javascript"></script>

Der hier angegebene Pfad zum Suchscript muss durch die gewünschte Peer-Adresse ergänzt werden, der Scriptname ist festgelegt.

<script>
  $(document).ready(function() {
     yconf = {
         url : 'http://mypeer:myport/',
         theme : 'start',
         title : 'Yacy Portal Search',
         logo : '/mylogo.png',
         link : 'http://somesite.tld/somelink.html',
         position : [top,40],
         width : 600,
         height : 400,
         resizable : true,
         show : ,
         hide : ,
         global : true
        };
        $.getScript(yconf.url+'/yacy/ui/js/yacyui-portalsearch.js', function(){});
  });
</script>

Diese Javascript Funktion reagiert bei Benutzereingabe im Suchfeld, stellt die Suchparameter zusammen und parkiert sie für die anschliessende Übergabe an den Peer im Array YCONF.

Warning.png Anführungszeichen bei einzelnen Parametern exakt übernehmen!

Das HTML-Formular

Vorraussetzung ist ein Formular das ein INPUT-Feld für den Suchbegriff und einige Parameter für die Funktion der Suche enthält.

<form id="ysearch" method="get" accept-charset="UTF-8" action="http://mypeer:myport/yacysearch.html">
  • Die ID des Suchformulars ist durch das Suchscript festgelegt, als Übergabemethode wird GET gewählt und als Fallback-Aktion das Standard-HTML Suchformular verlinkt.
<input name="search" id="yquery" type="text" size="22" maxlength="80" class="searchfield" value=""/>
  • Das eigentliche Suchfeld, festgelegt ist NAME und ID, die restlichen Angaben der aufrufenden Seite überlassen.
<input type="hidden" name="verify" value="false" />
  • Suchergebnisse vor der Anzeige nicht prüfen.
<input type="hidden" name="maximumRecords" value="25" />
  • Anzahl der Ergebnisse pro Ergebnisseite.
<input type="hidden" name="resource" value="global" />
  • Lokale oder globale Suche.
<input type="hidden" name="tenant" value="" />
  • Tenant der Suchabfrage, leer für alle Ergebnisse.
<input type="hidden" name="urlmaskfilter" value=".*" />
  • URL-Maske für die Suche
<input type="hidden" name="prefermaskfilter" value="" />
  • URL-Maske für die Anzeigereihenfolge
</form>

Die Umsetzung in PHP

Gängige Portalseiten verwenden PHP um serverseitig die HTML-Ausgabe dynamisch gestalten zu können, es kann also während der Auslieferung der Inhalt der HTML-Seite verändert werden. Das selbe gilt für in HTML eigebettetes Javascript.

<script src="<?php echo $PEER;?>/yacy/ui/js/jquery-1.3.1.min.js" type="text/javascript"></script>

Es wird die statische Angabe "MYPEER:MYPORT" durch die entsprechende PHP-Variable $PEER ersetzt, dazu definiert man über das Tag <?php ... ?> ein kleines Stück PHP im HTML-Quellcode. Diese Variablen müssen natürlich im Vorfeld belegt werden. Analog dazu sieht das obige reine HTML-Script in einer PHP/HTML Umgebung dann so aus:

Warning.png Schachtelung der Anführungszeichen beachten! Reichen 2 Ebenen nicht aus so muss eine weitere Ebene duch html-Codes(%) erzeugt werden.
<script>
$(document).ready(function() {
 yconf = {
        url : '<?php echo $peer;?>',
        theme : '<?php echo $winstyle;?>',
        title : 'Yacy Portal Search: <?php echo $peerFN."  -T:".$tenant."  -UM:".$urlmask."  -PM:".$prefmask."  -S:".$sopts;?>',
        logo : '<?php echo $logo;?>',
        link : '<?php echo $logolink;?>',
        position : <?php echo $winpos;?>,
        width : <?php echo $winwidth;?>,
        height : <?php echo $winheight;?>,
     	 resizable : <?php echo $resize;?>,
        show : '<?php echo $winshow;?>',
        hide : '<?php echo $winhide;?>',
        global : true
        };
 $.getScript(yconf.url+'/yacy/ui/js/yacyui-portalsearch.js', function(){});
});
</script>

So lässt es sich in jede PHP-Umgebung installieren und man kann die Variablen durch den Server verwalten lassen ohne in die HTML-Seiten eingreifen zu müssen.

Die Besonderheiten bei Wordpress

Wordpress bietet eine sehr bequeme Möglichkeit Erweiterungen über sogenannte Plugins zu realisieren, der Anwender muss das Plugin nur auf seinen Server kopieren und alles weitere über den Browser konfigurieren. Auch Einfluss der Seiten-Benutzer auf die Arbeitsweise des Plugins ist möglich. Für den Administrator stellt sich die Konfiguration so dar: WP-Konfigurationsdialog

Vorschau und Testumgebung

In einer Testinstallation können Wordpress-Plugins, Layouts und andere Erweiterungen, oder auch Browser auf Kompatibilität getestet werden. Bisher erfolgreich getestet wurden unter Wordpress: Firefox in den Versionen 2 und 3, Opera sowie der Internet Explorer in den Versionen 6-8. Letzterer generiert bei der Anzeige einige Warnungen die jedoch ignoriert werden können.

Download

Eine Testversion des Plugins für Wordpress kann man hier einsehen und herunterladen: http://www.itgrl.de/projekte/itgrl_yacy_search/#widgetcode

Plugins für andere Anwendungen

Durch den sehr flexiblen Aufruf des Suchscripts kann die Portalsuche analog in nahezu jeder dynamischen HTML-Umgebung eingesetzt werden.

Icon work.png TODO: Joomla,Typo3,Serendipity,...

Demopeers für Portalsuchen

Grundsätzlich eignet sich jeder YaCy-Peer für eine Portalsuche, diese Funktion muss nicht explizit freigeschaltet werden. Zusammen mit der Information auf welchem Port YaCy erreichbar ist reicht die öffentliche IP-Adresse um den Peer für Abfragen zu nutzen. Damit man vorab testen kann wie die Portalsuche funktioniert oder eigene Anwendungen entwickeln möchte stehen im Freeworld-Netzwerk Peers mit verschiedenen Anbindungen und Systemhardware zur Verfügung.

Dynamisch erreichbare Peers

Da Freeworld ein dynamisches Peer2Peer-Netzwerk ist sind die meisten teilnehmenden Peers weder ständig erreichbar noch haben sie feste IP-Adressen. Der Peer-Betreiber muss bei Bedarf dafür sorgen dass die wechselnde IP-Adresse auf einen per DNS aufgelösten festen Namen übertragen wird, beispielsweise per DynDNS. Diese Liste kann gern durch eigene Peers ergänzt werden, DynDNS-Adressen können zentral über einen Account 'yacydemo' aktuell gehalten werden.

  • ydemo1.ath.cx:8080 - ADSL16M, Windows 7, Intel Core2Duo, 4GB
  • ydemo2.ath.cx:8092 - Kabel32M, Ubuntu Intrepid, Intel Quad, 8GB
  • Huppi.dynDNS.org:8081 - shared DSL 2MBit, Ubuntu, 512 MB RAM (mehr schaffen die Kistchen nicht ...), , Intel Celeron P III

Statisch erreichbare Peers

  • ydemo3.ath.cx:8080 - Fibre1G, Debian Etch, Intel Core2Duo, 4GB

Ausblick

Langfristig ist angedacht einen Teil der Arbeit des Javascripts vom Benutzer-PC auf den Portalserver zu verlagern um den Anwender unabhängig von den verwendeten YaCy-Ports zu machen.

Quellen

Die Javascript Applikation wurde von Apfelmaennchen geschrieben, und von itGrl als YaCy WordPress Plug-In realisiert.