MySQL Wortteile suchen

S

Sepp

Gast
Hallo, und zwar möchte ich nach einem Wortteil suchen also wenn z.b Leute gibt die mit Nachnamen Berger heißen und man bei der Suche Berger eingibt (der vor und Nachname ist in einer Spalte) dann sollten auch Leute gefunden werden die z.b Johann Berger heißen.

Ich habe keine Idee wie ich das unkompliziert machen soll :/

Ich hoffe mir kann jemand einen Denkanstoß geben.
 
G

Gast2

Gast
[c]SELECT * FROM table WHERE Name LIKE %Berger%;[/c] ??

Bitte nicht... [c]WHERE name LIKE '%...' [/c] macht immer einen full table scan. Das ist einer der Todsünden von Datenbankentwicklung meiner Meinung nach, da geht die Perfomance total in den Keller. Mein Tip: Vorname und Nachname in eigene Spalten auftrennen und dann nach [c]WHERE Nachname = 'Berger'[/c] suchen
 

srea

Bekanntes Mitglied
Klar ist es besser den Vor- und Nachnamen in getrennten Spalten zu haben. Aber wenn du so gegen [c]WHERE ... LIKE '%..%'[/c] bist wie machste eine Suchfunktion? Zum Beispiel wenn bei "Ber" auch "Berger" ausgegeben werden soll?
 
G

Gast2

Gast
Klar ist es besser den Vor- und Nachnamen in getrennten Spalten zu haben. Aber wenn du so gegen [c]WHERE ... LIKE '%..%'[/c] bist wie machste eine Suchfunktion? Zum Beispiel wenn bei "Ber" auch "Berger" ausgegeben werden soll?

[c]WHERE nachname LIKE 'Ber%'[/c] ist kein Problem. Da greift der Index bereits. Nur wenn der erste Buchstabe direkt eine Wildcard ist kann kein Index funktionieren und das RDBMS startet einen full table scan. Das war ja auch keine Kritik an dir. Wenn man nur eine gemeinsame Spalte für Vorname + Nachname hat und nur nach dem Nachnamen + Wildcards sucht geht es nicht anders - aber dann ist das Datenmodell einfach schlecht und sollte überarbeitet werden.
 

Lianril

Neues Mitglied
Falls das eine häufige Anforderung ist, die an die Anwendung gestellt wird, lohnt es sich eventuell darüber nachzudenken, die Namensinformationen separat über Lucene verwalten zu lassen. Das Suchen erfolgt dann über die Lucene-eigene Datenbasis und ist richtig performant. Man kann den Benutzer dann auch selbst einen Suchstring ähnlich wie bei Google eingeben lassen.
 

Ähnliche Java Themen

Neue Themen


Oben