Suchfunktion für Homepage
[gw] bigBENNE
- php
Hallo,
wie kann ich am besten eine Suchfunktion für meine Web-Site ( http://www.gw-clan.com ) erstellen.
Gibt es da fertige gute Skripte in PHP oder von mir auch aus für CGI?
Die Seiten werden dynamisch zusammen gestellt, einige Daten kommen aus der Datenbank, andere stehen direkt in den Dateien und werden inkludiert.
Wie kann ich dafür am besten eine Suchfunktion suchen oder hat irgendwer einen Denk-Ansatz für mich, wie ich das selber scripten kann?
cu [gw] bigBENNE
Hallo bigBENNE,
Erst einmal: Prinzipiell solltest Du Dir mal ht://Dig ansehen. http://www.htdig.org/ Da aber Teile Deiner Seite aus einer Datenbank kommen, kann ich nicht sagen, wie groß der Aufwand wäre, ht://Dig anzupassen.
Wie kann ich dafür am besten eine Suchfunktion suchen oder hat irgendwer einen Denk-Ansatz für mich, wie ich das selber scripten kann?
Nunja, eine klassische Suche (wie auch die aktuelle SELF-Suche) funktioniert so:
Es gibt zwei Teile: Den Indexer und die eigentliche Suche. Der Indexer erzeugt einen Index, also eine Art Inhalts- und Wörterverzeichnis aller Inhalte und legt diesen an einem zentralen Ort ab. Bei der aktuellen SELF-Suche werden einfache Dateien als Index verwendet, Datenbanken sind jedoch genauso möglich und oftmals sogar effizienter. Die eigentliche Suche durchforstet dann den Index nach den gewünschten Wörtern.
Der Indexer muss nun regelmäßig aufgerufen werden, damit der Index auch aktuell bleibt. Hier auf dem SELF-Server wird regelmäßig irgendwann nachts ein Cron-Job laufen lassen, damit dies automatisch geschieht.
Noch etwas: In MySQL gibt es desweiteren noch einen eingebauten Index, den sog. FULLTEXT-Index, der genau die Funktionalität implementiert, die Du brauchst. Dieser wird beim Ändern von Datensätzen automatisch aktualisiert, so dass Du Dir um den Indexer keine Gedanken machen musst. Dies funktioniert aber dann nur in der Datenbank und nur bei MyISAM-Tabellen, nicht bei InnoDB. (InnoDB kennt keine FULLTEXT-Indexes) Für Dateien bräuchtest Du dann noch einmal eine Extra-Funktionalität.
Viele Grüße,
Christian