/blog/perl


substr() in Perl
[154370 mal gelesen]
foreach in Perl
[129204 mal gelesen]
Arrays in Perl - Besonderheiten
[125503 mal gelesen]
split() in Perl - Zeichenketten teilen
[113720 mal gelesen]
open() - Dateien öffnen in Perl
[109042 mal gelesen]
grep - Listen durchsuchen in Perl
[94793 mal gelesen]
chomp() in Perl
[93669 mal gelesen]
push in Perl
[90893 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[76016 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[59665 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Montag, 14.1.2008, 15:16:39 Uhr

Schande über mich - Ich habe PHP benutzt


Ja, so könnte die Überschrift lauten, wenn man für einen Perl-Blog auf PHP ausweichen muß...

Aber ganz so schlimm ist es ja auch nicht!

Ich habe heute endlich mal 'ne eigene Suchmaschine in diesen Blog eingebaut, und da mir die Probleme mit der Parameterübergabe und shtml-Seiten wohl bekannt waren, bin ich diesmal gleich auf php umgestiegen.

Obwohl die Suchmaschine natürlich in Perl gescripted ist, wird der Aufruf der Suchmaschine in PHP gestarted. Übrigens mit einem include(), für alle die, die's interessiert.

Wie dem auch sei: Man kann sich ja auch mal bei der "Konkurrenz" bedienen, wenn es sinnvoll ist.

Ich hoffe, die Suchfunktion tut ihre Arbeit, so weit ich getested habe, funktionierte alles... Bei Problemen am Besten 'nen Kommentar posten...

Durchsucht werden übrigens "nur" die Blog-Beiträge, nicht die Kommentare oder sowas...

So nebenbei nutze ich als Datenspeicher wieder mein Cache-Modul, das auch hier prima Arbeit leistet.



Nachtrag
Aufgrund der Anfrage unten in den Kommentaren, hier eine kleine Anleitung, wie ich mein Suchscript gestaltet habe:

Also der Sinn einer Suche ist ja, die Wörter, die gesucht werden, den Seiten zuzuweisen, die diese Wörter enthalten.

Deswegen muß man also alle Seiten in die einzelnen Wörter zerlegen. Wie das so ungefähr geht, habe ich hier beschrieben.
Diese einzelnen Wörter muß man dann abspeichern, zusammen mit der entsprechenden Seite.
Das könnte in etwa so aussehen:
wo
1,2,56,34,33
wie
22,44,53
usw.

Jedes Wort bekommt also so als Rattenschwanz all die Seiten, in denen es vorkommt.

Die Wörter sollte man übrigens erst in Kleinschreibung wandeln, bevor man sie verarbeitet. Das spart Festplattenplatz, da Wörter wie Das, das oder DAS sowieso immer das gleiche bedeuten.

Möglich wäre übrigens auch eine Gewichtung des Wortes, das es auf der Seite hat. So ist ein Wort in der Überschrift z.B. wichtiger, als wenn es nur einmal in einer 100KB-Datei liegt.

Jetzt hat man also all die Wörter, sinnig ist es vielleicht auch, den Seitentitel zwischenzuspeichern. Dies spart möglicherweise etwas Zeit bei der Ausgabe der Ergebnisse. In meinem Fall ziehe ich die Überschriften allerdings aus der Datenbank, wo sie sowieso schon herumlagern und schnell abzurufen sind.

Nun zur Suche
Der User gibt also ein Wort ein, z.B. Datei.
Das Script such nun nach dem Eintrag 'Datei' und findet den Rattenschwanz mit den Seiten, auf denen 'Datei' steht.

Diese Seiten werden nun ausgegeben, mit Titel.
Sollte man eine Gewichtung bzw. ein Ranking verwenden, werden die Ergebnisse vorher sortiert.

Im großen un Ganzen war's das schon, den Quelltext will ich nun aber nicht veröffentlichen...

Die Suche nach den ähnlichen Worten ist genauso simpel
Man nehme alle vorhandenen Worte und stelle einen "Pool" von falsch geschriebenen Worten her, also z.B.
Aus datei wird (ein Buchstabe vergessen)
atei
dtei
daei
dati
date

Aus datei wird (ein Buchstabe vertauscht)
adtei
dtaei
daeti
datie

usw.

Falls aus der Suche mit den Originalworten keine Treffer hervorgingen, werden nun die Falsch-Worte mit den User-Eingaben verglichen. Bei Treffern gibt man die freundliche Frage aus, ob der User vielleicht das entsprechende, real existierende Wort meinte.

Also alles keine Zauberei...




Kommentare zum Beitrag "Schande über mich - Ich habe PHP benutzt"

Kommentar von MaxistXXL
Du scheinst maechtig stolz zu sein darauf :-D.
Was speicherst du jetzt eigentlich alles damit?
Gibt es etwas, dass du nicht cachest?

Kommentar von Admin

Naja, was heißt mächtig stolz...
Ich würde eher sagen, ich bin froh, daß ich nun endlich 'nen "universellen Datenspeicher" habe, den ich für alle möglichen Scripte verwenden kann.

Denn man muß die Sache ja mal so sehen:
Schalte ich via nopurge() und exclusive() den automatischen Verfall der Daten ab, ist das Modul immer noch schnell genug für solche Geschichten (ich meine damit jetzt die Indexerstellung), und das schöne ist eben, es läuft überall, auf jedem System, auch notfalls von USB-Stick...

Allerdings muß ich sagen, daß ich bei einer "großen" Suchmaschine für viele Seiten (ich hab ja grad mal 200) diesen Weg nicht genommen hätte, da die Performance dann zu gering wäre... Hier wäre dann eine Datenbank die bessere Lösung.

Aber mein Cache erlaubt eben ein relativ "simples" speichern von Daten, bei dem man sich auch unter Multi-User-Umgebungen keinen Kopf machen muß.

Kommentar von Ulli
ich würde genre mehr über die Suchmaschine lesen. Wie hast du die realisiert?

Kommentar von Admin
Kleine Anleitung siehe im Nachtrag auf dieser Seite...

Kommentar von Renée Bäcker
Zu dem wie die Suchmaschine realisiert ist: Wenn Du MySQL verwendest, könntest Du auch "MATCH (Suchwörter) AGAINST (Spalten)" machen. Das verwende ich auf http://perl-nachrichten.de und bin bisher damit sehr gut gefahren. Allerdings habe ich dort noch keine Phonetische und/oder Rechtschreibähnlichkeit mit eingebaut.



Thema: Perl

Der Beitrag "Schande über mich - Ich habe PHP benutzt" wurde 7046 mal gelesen.

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

split() in Perl - Zeichenketten teilen

Mac-Adresse beim Apple Macintosh herausfinden

Die Schwartzsche Transformation - Arrays sortieren nach mehreren Kriterien

Epoche eines bestimmten Datums herausfinden

HTPC unter Vista - Mein Wohnzimmer-PC

Interessante Schreibweisen in Perl

Wie vermeide ich Fehler in Perl - strict

unlink() - Dateien löschen in Perl



0.179398059844971 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
27.12.2024

Es ist
1:08:46 Uhr

Ihre IP:
3.15.195.84

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4428524


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Impressum