Tissy: Volltextsuche in MySQL

Beitrag lesen

Guten Tag,

ich muss im Rahmen einer Projektarbeit eine Volltextsuche realisieren. (PHP und MySQL). Ich habe mir bereits alle Kapitel dazu auf der Seite von mysql angeschaut und die Suche funktioniert wirklich gut.

Die Suche funktioniert so: Es ist lediglich ein Textfeld vorhanden, welches "name" heißt. In diesem Textfeld kann man dann z.B. "Lena Hoffmann" eingeben. Die Suche findet allerdings auch "Lena Hoffmann" wen man nur 'en ma' eingibt. Ist auch so gewollt. Umgesetzt habe ich das ganze so:

$_GET['name'] = str_replace(' ', '*) +(*', $_GET['name']);
$_GET['name'] = '+(*'.$_GET['name'].'*)';

Die ersten Beiden Zeilen verwandeln ein 'en man' in ein '+(*en*) +(*man*)'.

Die beiden Pluszeichen dafür, dass beide Wörter drin vorkommen müssen und die (**) damit vor bzw. hinter dem einzelnen Wort noch etwas stehen kann.

$query = mysql_query("SELECT uid, firstname, surname FROM ".$MYSQL['table']['users']." WHERE MATCH (firstname, surname) AGAINST ('".$_GET['name']."' IN BOOLEAN MODE)") or die(mysql_error());

Dieser Teil code sucht dann die Eingabe.

Meine erste Frage lautet, ob man diese Suche evt. auf eine Datenbank-freundlicherer Art umsetzen könnte oder ob dieser Weg "gut" ausschaut.

Zweite Frage. Ich habe einfach immer noch nicht ganz den unterschied zwischen IN BOOLEAN MODE und WITH QUERY EXPANSION verstanden, würde aber behaupten das IN BOOLEAN MODE in meinem Fall geeignet wäre.

Dritte Frage, wie könnte ich das Script so anpassen das es egal wäre ob man ü, ö und ä oder ue, ue oder ua angibt.

Ich hoffe, dass mir jemand beim tuning meines Scripts helfen kann.

--
eure tissy