2010-11-22 8 views
1

Ich habe ein Auto-Vervollständigen-Feld, das für alle Länder, Städte, Nachbarschaften, Dörfer, Postleitzahlen automatisch abgeschlossen hat. Dies ist Teil einer Standort-Tracking-Funktion, die ich für meine Website erstelle. Sie können sich also vorstellen, dass diese Liste mehrere Millionen Zeilen umfasst. Erwartet über 20 Millionen mindestens mit allen Dörfern und Potal Codes. Um die automatische Vervollständigung gut zu machen, werde ich memcached verwenden, damit wir nicht immer auf die Datenbank treffen, um diese Liste zu erhalten. Es wird viel benutzt werden, da dies das Hauptmerkmal auf der Seite ist. Aber die Frage ist:Millionen von Zeilen Auto-Complete-Feld - Implementierungsideen?

Ist nur 1 Instace der Liste in memcached gespeichert, unabhängig davon, ob die Benutzer die Informationen abrufen, oder muss für jeden eine separate Instanz gepflegt werden? Also, wenn sagen, dass 20 Millionen Menschen es zur gleichen Zeit verwenden, wird sich das von nur einer Person unterscheiden, die den Standort automatisch vervollständigen? Ich bin offen für andere Ideen auch auf, wie Sie diesen Ort automatisch vervollständigen, so dass es gut funktioniert.

Oder kann ich etwas in der Art tun: Wenn sich ein Benutzer im Hintergrund anmeldet, schicke ich ihm die Liste trotzdem, damit der Computer sie zum Zeitpunkt des Auto-Complete-Texts sofort laden kann?

Antwort

1

Werfen Sie einen Blick auf Solr (oder Lucene selbst), mit NGram (oder EdgeNGram) Tokenizern können Sie gute Autocomplete-Leistung auf massiven Datensätzen erhalten.

+0

Kann ich stattdessen Sphinx verwenden? Flow ist wie folgt: Das sind AJAX-basierte Felder, also muss ich sie von AJAX treffen. Andere Sache ist, ich brauche GIS-Suche sowieso, also bevorzuge ich nur eine Technologie, die bei allen Bedürfnissen helfen kann, anstatt mehrere Technologien zu unterstützen. – bone33

+0

Solr wurde speziell für Ajax-Abfragen entwickelt. Ich weiß nicht viel über Sphinx, aber es scheint vergleichbar mit Lucene/Solr. Sie werfen einen Blick auf ihre Website und betonen den Indexierungsdurchsatz und die direkte Integration in relationale Datenbanken. Lucene hingegen scheint mehr Funktionen zu haben, besonders im Bereich der Textanalyse. Von dem, was ich gehört habe, ist ihre Suchleistung ziemlich ähnlich (natürlich sehr abhängig von dem spezifischen Anwendungsfall). Da sie das gleiche Datenmodell implementieren, würde ich annehmen, dass ihre GIS-Fähigkeiten ähnlich sind. – Dmitri

Verwandte Themen