Toom: [MySQL + PHP] Mehrere Spalten durchsuchen

Hi,

ich habe eine MySQL-DB mit den Feldern name, strasse, plz, ort. Am liebsten hätte ich jetzt - wie bspw. Google Maps - ein einziges Eingabefeld um eine Adresse zu suchen. D.h. ich kann einfach Firma XY München eingeben und bekomme die entsprechenden Ergebnisse. Natürlich will ich nur Zeilen ausgeben, in denen München *und* Firma XY vorkommt.

Da das ganze ala Google-Suggest ausgegeben werden soll, muss die Abfrage natürlich sehr flott sein - und genau daran scheitert es bisher. Vielleicht gibt es ja praktische MySQL-Funktionen, die das ermöglichen. "Komplizierteres" als SELECT ... FROM ... WHERE .. IN (...) hab ich noch nie verwendet (kenn ich also nicht).

Wie könnte Google Maps das gelöst haben? Ich behaupte mal, dass Google zwar wesentlich flottere Server hat als ich bei meinem Hoster, dafür aber auch einen x-mal größeren Index durchsuchen muss; bei mir sinds 12000 Zeilen.

Danke schon mal

  1. Tach!

    ich habe eine MySQL-DB mit den Feldern name, strasse, plz, ort. Am liebsten hätte ich jetzt - wie bspw. Google Maps - ein einziges Eingabefeld um eine Adresse zu suchen. D.h. ich kann einfach Firma XY München eingeben und bekomme die entsprechenden Ergebnisse. Natürlich will ich nur Zeilen ausgeben, in denen München *und* Firma XY vorkommt.

    Wie könnte Google Maps das gelöst haben?

    Sie werden kein relationales Datenbanksystem verwenden, denn sonst müssten sie viele Arbeitskräfte beschäftigen, um die unkategorisiert zu findenden Informationen in die entsprechenden Felder zu zerlegen und einzupflegen. Und bei jedem neuen Informationstyp müsste die Datenbank-Struktur erweitert werden. Da sind ganz andere Mechanismen zu Gange (vergleiche: Golem: Warum Googles Datensammeln gar nicht so böse ist). Diese Betrachtung nützt dir für dein Vorhaben nicht viel.

    Du willst etwas finden, aber in welchen Feldern das vorkommen kann, weißt du nicht genau - und es ist am Ende auch egal. Also pack alle Feldinhalte in einen String und lass eine Volltextsuche darüber laufen. Wobei dir hier MySQL die Arbeit abnimmt. Du musst nur einen Volltextindex auf alle betreffenden Felder legen und dann kannst du darin suchen: Full-Text Search Functions.

    dedlfix.

    1. Ok, das klingt vernünftig. Werde es mal testen; danke schön.