[Beschreibung]
Interne Suchmaschine für die eigene Homepage. Das Script eignet sich durch seinen hohen Konfigurationsaufwand nur für kleinere Webangebote.
[Kompatibilität]
[Code]
<script language="JavaScript1.1"> <!-- /* Dieses Script wurde von einem unbekannten Verfasser erstellt. Modifikationen an Design, Layout und Übersetzung: Bastian Baumann (webmaster@sneer.ch, http://www.sneer.ch) */ function suche(t) { // Suchwort mit weniger als 3 Buchstaben
if (t.length < 3) { document.formular.eingabe.focus(); alert("Sorry, der Suchbegriff muß mindestens 3 Zeichen lang sein."); return; } else { var auswahl = document.ra.r[0].checked ? 1 : 0 || document.ra.r[1].checked ? 2 : 0 || document.ra.r[2].checked ? 3 : 0 || document.ra.r[3].checked ? 4 : 0; document.open("text/html");
// Seitenkopf der Ergebnisseite //Hier lassen sich erste Einstellungen bezüglich Gestaltung machen, wie z.B. Überschrift und Suchergebniss anzeigen
document.writeln ('<HTML>'); document.writeln ('<HEAD>'); document.writeln ('<TITLE>Suchergebnis</TITLE>'); document.writeln ('</HEAD>'); document.writeln ('<BODY>'); document.writeln ('<table width="100%"><tr><td bgcolor=""><font face="VERDANA,ARIAL,HELVETICA"><font size="+3"><b>Suchmaschine<font color="#808080"> » Ergebnis</font><hr noshade size="1" color="#C0C0C0"></b></font></font></td></tr></table>'); if (auswahl == 1 || auswahl == 2) document.writeln ('<font size="-1"> <font face="VERDANA,ARIAL,HELVETICA"><p>Sie haben nach "<b><font color="#808080">'+t+'</font></b>" gesucht.</font></font><br><br>'); else document.writeln ('<P><font face="VERDANA,ARIAL,HELVETICA"><font size="-1">Sie haben nach Dokumenten gesucht, in denen "<b><font color="#808080">'+t+'</font></b>" nicht vorkommt.</font></font><br><br>'); // S U C H B E G R I F F E // Definition der Arrays d=new Array(); // d = keywords/suchbegriffe h=new Array(); // h = Dateiname/html Pfad u=new Array(); // t = Titel der Seite/Überschrift a=new Array(); // a = Autor b=new Array(); // b = Kurzbeschreibung
// !! ACHTUNG: hier zu durchsuchende Seiten angeben!!
d[0] = 'umfrage,vote,forum,gästebuch,gaestebuch,kino,events,wetter,fun,spass'; h[0] = 'http://www.sneer.ch'; u[0] = 'sneer.ch'; a[0] = 'Bastian Baumann'; b[0] = 'Willkommen in einer neuen Welt!';
// Jede zu durchsuchende Seite muss nach diesem Schema definiert werden
d[1] = 'java,applets,scripts,html,css,forum,helpdesk'; h[1] = 'http://www.nightfire.ch/java/'; u[1] = 'Nightfire Webworker Archiv'; a[1] = 'Nightfire'; b[1] = 'Java Archiv mit mehreren hundert Beispielen zum kostenlosen Download';
// ... usw.
// AB HIER NICHT MEHR RUMFUMMELN !!
var i=0; var j=0; var k=0; var l=0; var start=0; var gesetzt=0; var laenge=0; var zaehler=0; var kleinst=0; var anzahl=0; var end=d.length+1; var tmpwort; z = t.toLowerCase(); liste = new Array(); liste2 = new Array();
// Initialisieren von liste mit den Werten 1 bis Größe von d
for (i=0; i < d.length; i++) liste[i] = i; liste[i] = end; tquot = new Array(); eingabe = new Array(); eingabe[0] = "";
// Trennen der Suchbegriffe vom Benutzer - Trennzeichen: ' ', +, &
for (i=0;z.charAt(i) == ' ' || z.charAt(i) == '+' || z.charAt(i) == '&'; i++); for (; i < z.length; i++) { if (z.charAt(i) == ' ' || z.charAt(i) == '+' || z.charAt(i) == '&') { zaehler++; for (i++;z.charAt(i) == ' ' || z.charAt(i) == '+' || z.charAt(i) == '&'; i++); if (i != z.length) eingabe[zaehler] = ""; i--; } else { eingabe[zaehler] += z.charAt(i); } } zaehler=0;
// S U C H E N D E R B E G R I F F E // solange noch Suchbegriffe vorhanden sind for (m=0; m < eingabe.length; m++) { // solange i kleiner als die Größe von liste for (i=0; liste[i] != end && d[liste[i]]; i++) { // solange l kleiner als ein Element von d for (l=0; l < d[liste[i]].length;) { // Suche das erste Komma in d for (j=0; d[liste[i]].charAt(l+j) != ',' && l+j < d[liste[i]].length; j++); // solange k kleiner als der gefundene Begriff for (k=0; k < j+1; k++) { // Wenn der Buchstabe übereinstimmt, setze Start, falls noch nicht gesetzt if (eingabe[m].charAt(k) && d[liste[i]].charAt(l+k).toLowerCase() == eingabe[m].charAt(k)) { if (!gesetzt) { start=l+k; gesetzt=1; } } // wenn das Ende des eingegebenen Suchbegriffes erreicht ist else if (!eingabe[m].charAt(k) && gesetzt) { // U N D if (auswahl == 1 || auswahl == 3) { laenge=j+l-start; liste[zaehler] = liste[i]; if (!tquot[i]) tquot[i] = 0; tquot[zaehler] = (m*tquot[i]+(eval (eingabe[m].length / laenge * 100))) / (m+1); zaehler++; k=j+1; l = d[liste[i]].length; } // O D E R else { laenge=j+l-start; liste2[i] = 1; if (tquot[i]) { if (tquot[i] < eingabe[m].length / laenge * 100) tquot[i] = eingabe[m].length / laenge * 100; } else tquot[i] = eingabe[m].length / laenge * 100; k=j+1; l = d[liste[i]].length; } } else { k = j; gesetzt = 0; } } l+=j+1; gesetzt = 0; } } // U N D if (auswahl == 1 || auswahl == 3) { liste[zaehler] = end; tquot[zaehler] = 0; //wenn noch ein Suchbegriff vorhanden ist - zaehler auf 0 if (m+1 < eingabe.length) zaehler=0; } } // O D E R if (auswahl == 2 || auswahl == 4) { for (i=0; i<d.length; i++) { if (liste2[i]) { liste[zaehler] = i; tquot[zaehler] = tquot[i]; zaehler++; } } liste[zaehler] = end; tquot[zaehler] = 0; } // N I C H T if (auswahl == 3 || auswahl == 4) { for (i=0; i < d.length; i++) liste2[i] = i; for (i=0; liste[i] != end; i++) liste2[liste[i]] = end; zaehler = 0; for (i=0; i<liste2.length; i++) { if (liste2[i] != end) { liste[zaehler] = liste2[i]; tquot[zaehler] = 100; zaehler++; } } tquot[zaehler] = 0; }
// Schreiben der nächsten Zeilen // Unten lassen sich zahlreiche Einstellung machen, bezüglich Farbe, Schrift und Grösse der Seite, die die Ergenisse anzeigt!
document.writeln (' <font face="VERDANA,ARIAL,HELVETICA"><font size="-2"><font color="#C0C0C0">Eingetragene Seiten Insgesamt: <b>' + h.length + '</b></font></font></font></p>'); document.writeln (' <hr noshade size="1" color="#C0C0C0">'); document.writeln (' <p><font face="VERDANA,ARIAL,HELVETICA"><font size="-1">Gefundene Seiten insgesamt: <b><font color="#808080">'+zaehler+'</font></b></font></font></p>'); document.writeln (' <P><b><font size="-1"><font face="VERDANA,ARIAL,HELVETICA">Folgende Seiten/Stellen wurden gefunden:</font></font></b></P>'); document.writeln (' <OL>'); gesetzt = 0;
// wenn mindestens ein Ergebnis gefunden wurde if (zaehler) { // S O R T I E R E N N A C H T R E F F E R Q U O T E // (B U B B L E - S O R T) for (i=0; tquot[i]; i++) { for (j=i+1; tquot[j]; j++) { if (tquot[i] < tquot[j]) { k = liste[j]; liste[j] = liste[i]; liste[i] = k; k = tquot[j]; tquot[j] = tquot[i]; tquot[i] = k; } } } // A U S G A B E D E R S O R T I E R T E N E R G E B N I S S E for (i=0; tquot[i]; i++) { stichwoerter = new Array(); if (auswahl == 1 || auswahl == 2) { zaehler = 0; for (j=0; eingabe[j]; j++) { gesetzt = 1; laenge = 0; var zeile = d[liste[i]].toLowerCase(); if (zeile.indexOf(eingabe[j]) != -1) { laenge += zeile.indexOf(eingabe[j])+eingabe[j].length; if (laenge-eingabe[j].length-1 != -1) { while (zeile.substring(laenge).indexOf(eingabe[j])!=-1 && zeile.charAt(laenge-eingabe[j].length-1) != ',' && zeile.charAt(laenge-eingabe[j].length-1)) laenge += zeile.substring(laenge).indexOf(eingabe[j])+eingabe[j].length; if (zeile.substring(laenge).indexOf(',') == -1 && (zeile.charAt(laenge-eingabe[j].length-1) == ',' || !zeile.charAt(laenge-eingabe[j].length-1))) k = zeile.length; else if (zeile.substring(laenge).indexOf(',') != -1 && (zeile.charAt(laenge-eingabe[j].length-1) == ',' || !zeile.charAt(laenge-eingabe[j].length-1))) k = zeile.substring(laenge).indexOf(',')+laenge; else gesetzt = 0; } else { if (zeile.substring(laenge).indexOf(',') != -1) k = zeile.substring(laenge).indexOf(',') + laenge; else k = zeile.length; } } else gesetzt = 0; if (gesetzt) { if (!zaehler) tmpwort = d[liste[i]].substring(laenge-eingabe[j].length, laenge) + d[liste[i]].substring(laenge, k); stichwoerter[zaehler] = '<i><u>' + d[liste[i]].substring(laenge-eingabe[j].length, laenge) + '</i></u>' + d[liste[i]].substring(laenge, k); } else stichwoerter[zaehler] = ' '; zaehler++; } } document.write ('<LI><font face="VERDANA,ARIAL,HELVETICA"><font color="#808080"><font size="-1">['+Math.round(tquot[i])+'%]</font></font></font> <font face="VERDANA,ARIAL,HELVETICA"><strong><font face="VERDANA,ARIAL,HELVETICA"><font size="+1"><font color="#FF8000">' + u[liste[i]] +'</font></font></font></strong> <A HREF="'+h[liste[i]]+'#'+tmpwort+'"><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><font color="#808080">'+h[liste[i]]+'</font></font></font></A><BR>\n' + '<font size=-1><b>Autor: </b><i>' +a[liste[i]]+ '</I><br>\n' + '<b>Beschreibung: </b>' +b[liste[i]] + '\n'); gesetzt = 0; if (auswahl == 1 || auswahl == 2) { document.write('<br><b><i>Stichwörter: </i></b><font face="VERDANA,ARIAL,HELVETICA">'); for (j=0; j < zaehler; j++) { if (stichwoerter[j] != ' ' && gesetzt) document.write(', ' + stichwoerter[j]); else if (stichwoerter[j] != ' ') { document.write(stichwoerter[j]); gesetzt = 1; } } } document.writeln ('\n </font></font></font></li><br><br>'); } document.writeln (' </OL>'); } // wenn kein Ergebnis gefunden wurde else { document.writeln (' </OL>'); document.writeln (' <P><b><font size="-1"><font face="VERDANA,ARIAL,HELVETICA"><font color="#FF8000">Leider wurde kein Ergebnis gefunden.</font></font></font></b></P>'); } // Schreiben der Fußzeilen document.writeln ('<a href="javascript:history.back();"><font size="-2"><font color="#808080"><font face="VERDANA,ARIAL,HELVETICA">Zurück zur Sucheingabe</font></font></font></a>'); document.writeln ('</BODY>'); document.writeln ('</HTML>'); } document.close(); if (navigator.appName == "Netscape" && navigator.appVersion.substring(0,1) == 3) history.go(0); } function loesche() { document.formular.reset(); document.formular.eingabe.focus(); } //--> </script>
onLoad="document.formular.eingabe.value='';document.formular.eingabe.focus()">
<table width="100%"> <tr> <td bgcolor=""> <font face="VERDANA,ARIAL,HELVETICA"><font size="+3"><b>Suchmaschine<hr noshade size="1" color="#C0C0C0"></b></font></font> </td> </tr> </table> <br>
<table width="100%"> <tr> <td bgcolor="#F0F0F0"> <font face="VERDANA,ARIAL,HELVETICA"><font size="-1">Bitte <b>Suchbegriff</b> eingeben!</font></font> </td> </tr> </table> <form name="formular" onsubmit="suche(document.formular.eingabe.value);return false;"> <input type="text" name="eingabe" size="60"> </form><form name="Buttons"> <table border=0 width=50%> <tr> <td> <input type="button" value="Suche starten" onClick="suche(document.formular.eingabe.value)"> </td> <td> <input type="button" value="Eingabe löschen" onClick="document.formular.eingabe.value='';document.formular.eingabe.focus()"> </td> </tr> </table></form>
<form name="ra"> <table bgcolor="" bordercolor="" bordercolorlight="" bordercolordark="" width="100%"> <tr> <td bgcolor="#F0F0F0" bordercolor="" bordercolorlight="" bordercolordark="" width="25%"><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><input type=radio checked name="r" value="und"> und</font></font> </td> <td bgcolor="#E0E0E0" bordercolor="" bordercolorlight="" bordercolordark="" width="25%"><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><input type=radio name="r" value="oder"> oder</font></font> </td> <td bgcolor="#F0F0F0" bordercolor="" bordercolorlight="" bordercolordark="" width="25%"><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><input type=radio name="r" value="nichtund"> nicht und</font></font> </td> <td bgcolor="#E0E0E0" bordercolor="" bordercolorlight="" bordercolordark="" width="25%" ><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><input type=radio name="r" value="nichtoder"> nicht oder</font></font> </td> </tr> </table> </form>
<table width="100%"> <tr bgcolor="#E0E0E0" bordercolor="" bordercolorlight="" bordercolordark=""> <td><font face="VERDANA,ARIAL,HELVETICA"><font size="-1"><b>Hinweise</b> zur Suche:</font></font> </td> </tr> <tr bgcolor="#F0F0F0" bordercolor="" bordercolorlight="" bordercolordark="" > <td><font face="VERDANA,ARIAL,HELVETICA"><font size="-2"> <ul> <li>Gesucht wird immer nach Stichworten</li> <li>Der Suchbegriff muß mindestens 3 Buchstaben enthalten</li> <li>Bei der Verknüpfung "UND" müssen alle eingegebenen Suchbegriffe in einer Seite enthalten sein</li> <li>Bei "ODER" muß mindestens einer der Suchbegriffe auf einer Seite vorhanden sein</li> <li>"NICHT" kehrt das Ergebnis um</li> <li>Zwischen 2 Begriffen dürfen '+', '&' bzw. ein Leerzeichen als Trennzeichen verwendet werden</li> </ul> </font></font> </td> </tr> </table>
?? modified by sneer.ch
Kopieren Sie bitte den Code