Suchfunktionalität auf meiner Webseite?
Hallo,
ich würde gerne nochmal auf euer Wissen zurückgreifen. Ich habe auf meiner Webseite eine Liste mit verschiedenen Dokumenten. Nun möchte ich eine Suchfunktion dafür implementieren. Wie sollte ich da vorgehen? Sollte die Suchfunktion rein im Frontend laufen (mittels JavaScript) oder sollte ich die Suche über den Server und die Datenbank laufen lassen?
Ich bin mir leider nicht sicher, welche Variante besser geeignet ist bzw. schneller ist
Schon mal Danke für die Hilfe :)
3 Antworten
Wie sollte ich da vorgehen?
Du musst die zu durchsuchenden Daten im Backend erst einmal sammeln. Danach kannst du sie entweder dort oder im Browser filtern.
Mache dir erst einmal Gedanken über den genauen Ablauf der Suche, was sie genau berücksichtigen soll und welches Verhalten du haben möchtest (eine Suche nach ganzen Wörtern, Teilwörtern, Wörtern mit ähnlichem Wortklang, u.ä.).
Sollte die Suchfunktion rein im Frontend laufen (...) oder (...) über den Server(...)?
Das hängt von der Menge der zu durchsuchenden Daten ab sowie dem dafür notwendigen Rechenaufwand. Angenommen, du hast ein paar tausend Dokumente und möchtest die mit einer Volltextsuche durchleuchten, wäre das eher etwas, was für das Backend. Bräuchtest du hingegen nur einen Filter nach Dokumenttitel, ist das locker mit JavaScript getan.
Im Fall einer Volltextsuche würde es sich lohnen, eine Search Engine wie Elasticsearch, Lucene, Sphinx oder Xapian einzubinden.
Wenn sich die Daten für die Suche nicht zu häufig ändern, könntest du dir zudem überlegen, sie zumindest für eine bestimmte Zeit zwischenzuspeichern. Dafür reicht ein Dictionary, welches sich Suchanfragen im Verbund mit dessen Suchergebnissen merkt. Wenn eine Suchanfrage als Schlüssel im Dictionary bereits existiert, wird der damit assoziierte Wert zurückgegeben, andernfalls legt man einen neuen Eintrag an.
Im Browser wiederum kannst du Debouncing-Mechanismen implementieren, damit Suchanfragen nicht zu oft in kurzer Zeit neugestellt werden können.
Wenn die Dokumente ja auf dieser Seite sind, brauchst du ja keine Suche, dann sind sie ja bekannt.
Ich nehme an, du möchtest die Dokumente auf der Ganzen Website (nicht nur einer Webseite) suchen.
Dann musst du natürlich auf dem Backend suchen.
PHP bietet sich da an.
Entweder direkt suchen oder aus Datenbank, beides ist möglich
Was willst du durchsuchen? Die Dokumente selbst als Volltextsuche? Da müsstest du sie optimal indixieren im Vorfeld, auf jeden Fall kommst du da frontendseitig nicht weiter.
Wenn du nur eine Suche nach dateinamen machen willst die alle direkt geladen werden kannst du mit javascript was basteln.
Schaue ich mir mal an. Vielen Dank für die schnelle Hilfe :)
Die Suche soll eigentlich eher ein Filter sein. Wenn ich 50 Einträge habe beispielsweise und Eintrag1 eingebe, möchte ich, dass in der Liste nur noch Eintrag1 zu sehen ist und die Einträge 2 - 50 ausgeblendet sind
wenn es nur um daten gibt die in die Webseite geladen werden schau dir mal https://datatables.net/ an. Hat relativ mächtige Möglichkeiten.
Okay, ich glaube ich habe es falsch beschrieben. Es soll eigentlich eine Filtersuchfunktion sein