Einen wunderschönen Tag wünsche ich,
Ich habe ein Problem bei einer Datenbankabfrage.
Ich benutze eine SELECT Anweisung dieser Art:
SELECT p.id, p.name FROM personendaten AS p
INNER JOIN motoren AS m ON p.id = m.id WHERE m.keyword IN ('a','b','c')
Diese funktioniet tadelos und findet, wonach ich suche.
Nun möchte ich einen Pluralcheck einbauen.
Wenn in der Datenbank "Frau" steht, dann sollte dieser Eintrag auch bei der Suche nach "Frauen" gefunden werden. Ebenso sollte auch "Frauen" gesucht werden, wenn nach "Frau" gesucht wird.
Eine Verwendung von LIKE 'Frau%' funktioniert hier ja nur bei Variante eins ("Frau" liefert auch "Frauen"). Bei Variante zwei klappt es nicht.
Auch möchte ich vermeiden, dass eine Suche nach "Frau" mir auch z.B. "Frauenfussball" liefert.
Ich dachte da an einen regulären Ausdruck in der Suche, wüsste aber nicht wie der clever aussehen müsste. Da es sich nur um Pluralcheck handelt und ich damit eh nie alle Plurale abdecken kann (Wie "Taxen" oder "Pizzen"), denke ich an eine Routine dieser Art:
Suche nach Begriff "X":
Suche nach "X"
und "X" mit 1 oder 2 weiteren Zeichen am Ende des Wortes
und "X" mit 1 oder 2 Zeichen weniger am Ende des Wortes, wenn diese "en" oder "er" sind.
Der letzte Teil ist fragwürdig, weil es extrem viele Ausnahmen dieser Regel geben würde.
Ich denke ich komme um eine Vergleichstabelle der Art "Wenn 'Haus', dann auch suche nach 'Häuser'" nicht herum, aber ich würde zumindest bestmöglich ein paar Fälle abdecken.
Ich bin für jeden Rat dankbar,
Einen schönen Tag noch, auch wenn der Sommer gerade eine peinliche Vorstellung liefert...
Sebi