Autocomplete/Autosuggest mit sehr vielen Einträgen - WIE?

Keules

Grünschnabel
Hallo!

Ich möchte gerne Autocomplete/Autosuggest Funktion erstellen und habe hierzu schon einige Möglichkeiten probiert. (Ajax, Spry, u.w.).

Leider habe ich sehr viele Einträge die ich anzeigen lassen möchte (ca. 115.000). Nun habe ich das Problem, dass das Skript bei der Suche sehr früh abbricht, weil das einfach zu viel Auswahl ist. Eine XML Datei in diesem Umfang hat schon ca. 12,5 MB!

Ich habe jedoch Seiten gesehen, wo das kein Problem ist z.B.

http://www.netflix.com/BrowseSelection

Über 100.000 DVD Titel werden dort angeboten die bei beim Eingabefeld links gefiltert werden.

oder auch http://pizza.de

PLZ-Auswahl mit Stadtteil im oberen Eingabefeld, also auch ca. 100.000 Einträge. Dort läuft das flüssig ohne Probleme.

Bei mir hängt alles schon mit knapp 5000 Einträgen, von 100.000 glatt zu schweigen.

Sogar hier in der Eingabe sehe ich gerade, dass bei der Stichworteingabe so eine Funktion läuft mit sicher auch mehreren 1000 Begriffen.

Kann mir jemand eine Möglichkeit nennen, wie das am Besten klappt. Wichtig wäre noch, dass die Anzahl der max. sichbaren Vorschläge einstellbar sind.

Danke!
Grüße
Keules
 
Wie machst du es denn im Moment?

Da mit AJAX dran zu gehen und bei einer SQL-Anweisung zum Beispiel "LIMIT 10" als Begrenzung hinzuschreiben wäre eine einfache Variante.
 
Hallo!

Also ich habe es derzeit mit einer fertigen XML Datei versucht, allerdings ist das extrem langsam und das Script bricht ab.

Ich versuche es mit Ajax (haber derzeit das Spry Framework von Adobe im Test).

Habe auch ein anderes Script probiert

http://www.brandspankingnew.net/specials/ajax_autosuggest/ajax_autosuggest_autocomplete.html

Fand ich von der Aufmachung sehr gut, allerdings habe ich ich es nicht geschafft, dass er eine DB-Abfrage statt der statischen Daten nimmt. Weiteres Problem hierbei war auch, das der keine Begrenzung per Script hat.

Wie genau funktioniert denn eine SQL Abfrage mit Ajax? ich habe schon einiges versucht, aber bei dem Zusammenspiel dieser beiden Welten PHP und Ajax knickt mein Hirn langsam ein.

Danke und Grüße
Keules
 
Stell dir AJAX wie einen weiteren Browser vor der Seiten abfragt und deren Inhalt ausliest. Diesen Inhalt kann man dann Anzeigen lassen und ähnliches.

Und stell dir PHP wie den Produzenten der Seiten vor, der den Inhalt generiert.

Damit das auf SQL-Basis möglich ist müssten die Daten allesamt in einer Datenbank sein. Da deins auf einem XML-Dokument basiert schätze ich das es immer langsam sein wird, da über eine ganze Datei (teilweise rekursiv) iteriert wird und die Fundstellen einzeln gesammelt werden. Dies geschieht bei Datenbanken auch, allerdings sind diese auch dafür gedacht und um einiges schneller.

Datenbank-Erweiterungen: http://www.php.net/manual/en/refs.database.php
XML-Erweiterungen: http://www.php.net/manual/en/refs.xml.php
 
Hi,

also alle Daten sind in einer Datenbank und die ist auch fix. Aber bisher habe ich es nicht hinbekommen, dass er sich die Daten auch von dort holt.

Bisher habe ich es so verstanden, dass die Autocomplete Funktion die fertigen Daten verarbeitet, z.B. mit einer JSON oder XML Datei.

Am liebsten wäre mir natürlich eine Möglichkeit, wo diese Funktion bei der Eingabe - eine DB-Abfrage auf genau dieses Zeichen macht.

Bisher ist mir nur das noch nicht gelungen, da ich von Javascript auch nicht so die Ahnung habe. Mein gebiet ist eher PHP.

Nur bisher hatte ich nur Abfragen wo eine Anfrage per GET oder POST abgeschickt wird und dann gibt die Abfrage dementsprechende Werte zurück.

Gibt es irgendwo ein Besipiel wo die SQL Abfrage (MySQL) so funktioniert?

Dank und Gruß
Keules
 
Hallo!

Also danke erst mal für den Link, das habe ich gleich ausprobiert und es funktioniert.
Allerdings kann das Script ebenfalls nur ohne Begrenzer anzeigen lassen, oder ich bin nur zu doof .
Da die jquery.autocomplete.js die im Link zum Download steht nicht mehr existiert habe ich eine andere genommen, klappt.

Wenn ich jetzt noch rausfinde wie man maximal 10 Einträge gleichzeitig anzeigt, wäre es perfekt.

Wenn ich das Limit in der DB Abfrage setze , dann speichert er ja nur mx. 10 Einträge, was ja nicht Sin der Sache ist.

Vielen Dank auf jeden Fall

Gruß
Keules
 
Zurück