Mysql-Abfrage stellt mich vor ein Problem

Hallo.

Ich möchte zu Vergleichszwecken aus einer Datenbank alle Beiträge holen, die das Wort "abc" enthalten, aber nur als vollständiges Wort, also nicht dabcd.

Grundsätzlich ja kein Problem, aber schon die Abfrage benötigt mehrere "like" - Anweisungen, da ich ja nicht weiß, ob das Wort am Anfang des Beitrages steht, was kein führendes Leerzeichen bedeutet, oder ob am Ende ein Satzzeichen oder ein Break steht, was wiederum kein Leerzeichen ist.

Wie mache ich möglichst performant eine Abfrage, die sowohl "Rot war die Nacht" als auch die Nacht war rot." sowie "So rot war die Nacht" erkennt, bei "Die Nacht hatte einen roten Klang" aber drüberspringt.

Grund ist folgender:
Ich habe einen Beitrag X mit 20 Wörtern. Ich möchte nun in allen anderen Beiträgen (derzeit 17.000) einen Häufigkeitsvergleich der auftretenden Wörter führen, muss also (so denke ich) zu jedem Wort eine Häufigkeitsstatistik erstellen.

Das ganze soll derart münden, dass ich so etwas wie ein Relevanz-Netzwerk zwischen den Beiträgen spinnen kann - am liebsten natürlich zur Laufzeit und nicht nur einmal täglich durchgerechnet. Der Eindruck soll der eines semantischen Suchalgorithmusses werden.

Nun bin ich zwar begnadeter Bastler, aber kein Mathegenius und kenn mich mit nominal und sonstiger Verteilung so gut wie nicht aus.

Fazit: Was meinen die Schlaueren unter euch - ist das überhaupt halbwegs performant zu regeln, oder sollte ich es gleich stecken?

Bin für jede sachliche Kritik dankbar.
 
Hast du's mal mit regulären Ausdrücken versucht? Vielleicht klappt's ja mit etwas in der Form

Code:
SELECT *
FROM tabelle
WHERE spalte REGEXP '\brot\b'

Doku
 
ich wusste nicht das das geht, hatte nix dergleichen gefunden - aber evtl. hab ich mich auch nur beim suchen blöd vertippt.

Geniale Sache, wenn das mit RegEx geht, ist das pippikram *freu

DANKE!
 
Zurück
Oben