suchmaschine programmieren, aber mit einigen "feinheiten"
azok
- php
0 Danny0 Andreas Korthaus0 fastix®0 e7
hi!
ich habe es, vor einiger zeit, mit hilfe einer anleitung fertig gebracht eine suchmaschine für die eigene webseite auf php-basis zu programmieren. (mittlerweile, würde ich es -denke ich- ohne anleitung auch schaffen...) nun ja, kommen wir also zum punkt: die suchmaschine durchsucht die einzelnen seiten nach dem bestimmten wort, und gibt mir als ergebnis den dateinamen aus, in dem der begriff vorkommt. das problem aber ist, dass ich gerne hätte, dass neben dem dateinamen auch eine beschreibung zu dieser seite ausgegeben werden soll bzw. nicht der dateiname selber sondern ein anderer name. (z.b. der titel der seite). mit mysql würde sich so etwas doch _relativ_ "einfach" realisieren lassen. das problem dabei ist, dass mein (free)webspace anbieter aber "nur" php unterstützt. eins noch: wie könnte man es realisieren, dass man auch die zeichen +, - usw. verwenden kann? (z.b. mit if funktion, wenn man + drückt, dass aus den beiden begriffen ein string gebildet werden soll??). naja, ich würde mich jedenfalls für eure antworten freuen.
P.S. wie findet ihr vom aussehen (inhalt ist noch nicht wirklich vorhanden) meine seite? http://www.html-netz.at.tt/ oder, wenn der nicht funktioniert http://www.djcrackman.net/usr/chopin/nichtda.php4
lg
azok (=freak, aber ich weiß das passwort leider nicht mehr...)
Hi,
dass neben dem dateinamen auch eine beschreibung zu dieser seite ausgegeben werden soll bzw. nicht der dateiname selber sondern ein anderer name. (z.b. der titel der seite). mit mysql würde sich so etwas doch _relativ_ "einfach" realisieren lassen.
Wenn die Daten nicht in DB-Feldern gespeichert sind, brauchst Du einen Parser (i.d.R. auf Basis regulärer Ausdrücke), der aus den kompletten Webseite das title-Tag extrahiert. Ist die Seite xhtml-konform, geht das auch einfacher über den PHP-internen XML-Parser, was dann allerdings weit mehr Performance kostet.
wie könnte man es realisieren, dass man auch die zeichen +, - usw. verwenden kann?
Das ist vergleichsweise einfach. Du scannst den input-String nach + oder - und splittest die Teile davor und danach (anschließend Leerzeichen trimmen nicht vergessen) entsprechend auf. Auch dafür sind reguläre Ausdrücke empfehlenswert.
MfG
Danny
Hallo!
die suchmaschine durchsucht die einzelnen seiten nach dem bestimmten wort, und gibt mir als ergebnis den dateinamen aus, in dem der begriff vorkommt. das problem aber ist, dass ich gerne hätte, dass neben dem dateinamen auch eine beschreibung zu dieser seite ausgegeben werden soll bzw. nicht der dateiname selber sondern ein anderer name. (z.b. der titel der seite).
Dann musst Du halt mehr Informationen aus der Seite auslesen, das einfachste wäre wohl hier die Meta-Tags auszulesen (Vorausgesetzt Du hast die auch überall entsprechend gefüllt), denn hierzu gibt es eine fertige PHP-Funktion: http://de3.php.net/manual/de/function.get-meta-tags.php
Wenn Du den Titel der Seite zusätzlich auslesen willst, dann musst Du das wohl mit einem regulären Ausdruck machen, preg_match() oder sowas. Wenn Du viele Seiten hast solltest Du die entsprechenden Informationen indizieren, das heißt z.B. in eine Datenbank schreiben, und die beim Suchen abfragen.
mit mysql würde sich so etwas doch _relativ_ "einfach" realisieren lassen. das problem dabei ist, dass mein (free)webspace anbieter aber "nur" php unterstützt.
OK, geht genausogut mit Text-Files.
eins noch: wie könnte man es realisieren, dass man auch die zeichen +, - usw. verwenden kann? (z.b. mit if funktion, wenn man + drückt, dass aus den beiden begriffen ein string gebildet werden soll??).
Das versteh ich jetzt nicht. Normalerweise bedeutet ein '+', dass ein Suchbegriff vorkommen _muss_, wenn Du einen kompletten String mit Leerzeichen suchen willst verwendet man normalerweise "wort1 wort2".
Du musst dann den Suchstring den der Anwender eingegeben hat halt entsprechend parsen, das heißt die von Dir definierten Sonderzeichen suchen, und den String entsprechend "zerpflücken", um danach entsprechend den Sonderzeichen eine Suche starten. Aber dazu musst Du erstmal genau definieren wie die Syntax der Suche aussehen soll, und bedenke dabei dass Du das alles implementieren musst ;-)
Ein paar Ideen was man da so anbieten könnte findest Du z.B. hier:
http://selfsuche.teamone.de/
http://www.google.com/help/basics.html
Grüße
Andreas
Moin!
Also: die Suchmaschine hast Du programmiert, sie liefert Dir die Dateinamen der Seiten und Du bist nicht in der Lage, die Dateien zu öffnen, in eine Variable einzulesen und mittels Regex alles zwischen <title>.*</title> oder der Meta-Angabe "description" auslesen zu lassen?
Die Frage ist zugleich die Programmieranleitung...
Auch das andere ist machbar: Du musst Deinen String optimal auf Quotas untersuchen: Alles, was zwischen Quotas steht ist ein Begriff, nach dem einfach gesucht wird. Danach musst Du alle in der Eingabe gefundenen "Wörter" (eben auch die innerhalb der Quotas) in einen Array schreiben. Hierbei hilft Dir ein Regex. Steht zwischen den Wörtern nichts oder ein Plus, dann machst Du folgendes:
Du durchsuchst die Dateien, legst ein Array über alle Dateien an und schreibst eine Wichtung (zunächst einfach 0) mit hinein. Jetzt duchsuchst Du alle Dateien im Array der Reihe nach nach den Suchbegriffen, Findet sich ein Wort dann erhöhst Du die Wichtung um 1. Steht vor dem Wort ein Minus und es wird gefunden, dann lösche die Datei aus dem Array und Du durchsuchst sie somit nicht mehr nach weiteren Suchbegriffen. Das machst Du der Reihe nach für alle Suchbegriffe im Array. Am Ende löschst Du alles aus dem Array, dessen Wichtung 0 ist, sortierst diesen nach Wichtung (umgekehrt) und gibst die Dateinamen aus dem Array aus... oder schließt den oben stehenden Vorgang an...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
P.S. wie findet ihr vom aussehen (inhalt ist noch nicht wirklich vorhanden) meine seite?
Zitiere: >> Für das Bookmarken benötigen Sie JavaScript. Soll heißen, es muss aktiviert sein <<
Ach ja? Bei mir ist JavaScript aktiviert und es klappt doch nicht! Evtl. solltest du noch eine Abfrage für den IE einbauen!
E7