vorerst, ich werde die Datenbank von http://www.geonames.org/ (Inkl. alternative names) nutzen. Hab sie bis jetzt aber noch nicht unter MySQL eingespielt.
Auf der Startseite wird es einen Input mit Autocomplete geben. Er soll anhand von dem was der Visitor eingetippt hat, die besten 5 Städte aus der Datenbank vorschlagen. (Like Suche)
Jetzt muss ich anhand dieser Daten die richtige Stadt/Geolocation (id) aus der Datenbank holen. Wie kann ich da am besten vorgehen? Beispieldaten wären unteranderem:
duesseldorf-nrw-deutschland
springfield
deutschland
Noch habe ich garnicht mit der Implementierung angefangen. Brauche etwas Rat.
Habe die Datenbank dazu, jedoch die Klassen stehen leider nicht zur Verfügung oder ich habe sie nicht gefunden. Mir ist es wichtig, dieses Resultat aus meiner Datenbank zu erhalten. (Ohne einen Api-Call zu geonames, sondern direkt offline über MySQL)
Das Problem ist, dass ich nicht auf die Api von Geonames zugreifen will. Ich will selber meine eigene Datenbank nutzen anhand der Daten, die bei geonames herunterladbar sind.
Diese will ich in MySQL importieren und anschliessend will ich genau so eine Suche ermöglichen? Jedoch wüsste ich nicht wie ich das ganze parsen (Sprich munih, germany) sollte? Wie die Query aussehen sollte bzgl. Performance?
Die Antwort darauf hängt von deinem eigenen Datenbankschema ab. Dieses musst Du optimal auf das schnelle Auslesen von Werten auslegen. Schau dir z.B. mal die OpenGeoDB an - dort gibt es ein interessantes Schema mit zahlreichen SQL-Beispielen.
Okay, fangen wir erst mit dem Parser an.
Sagen wir ich habe eine Datenbank mit den spalten:
land, bundesland, plz, ort.
Und eine Suche sieht z.B. so aus:
„40211 Düsseldorf, Germany“
„Düsseldorf, nrw“
„düsseldorf“
„Düsseldorf, Germany“
„Germany Düsseldorf“
Wie kann ich das ganze am besten anhand dieser Suchen parsen? Irgendwie muss ja eine query gebaut werden…
Genau hier sehe ich auch das schwierigste. Übrigens ich werde ElasticSearch nutzen (Habe bis jetzt aber noch nie damit gearbeitet). Evtl. bietet ElasticSearch genau so etwas an und ich weiss davon nichts.
Habe zwar selbst noch nie praktisch mit ElasticSearch gearbeitet, aber wenn du den Einstieg geschafft hast, sollte deine eigentliche Frage ein Kinderspiel sein.