Probleme mit Volltextsuche

SXrunner

Mitglied
Ich hab mal eine einfache Volltextsuche erstellt.Die einfachste Methode mit LIKE.

Code:
$search="SELECT * FROM db  WHERE kurztext LIKE '%$wort%' OR objekt LIKE '%$wort%';";

Die Variable wort wird durch ein Formular übergeben.
Das Problem ist,wenn z.B. in einer db-Zeile "Neue Welt" steht und man "Neue Welt" als Suchbegriff eingibt findet er es;wenn man aber "Welt Neue" eingibt findet er nichts.
Ist die Abfrage falsch oder geht das nicht anders?Was kann ich tun?
 
Wenn Du beide Worte finden willst (nicht in Reihenfolge zusammenhängend), musst Du auch nach beiden einzeln prüfen.
Als Ansatz dieser Code, der die entsprechende WHERE-Klausel erzeugt:
PHP:
$suchbegriffe="Neue Welt";
$sbArr=explode(" ",$suchbegriffe);
$whereArr=array();
foreach ($sbArr as $sb) {
    $whereArr[]="zuDurchsuchendesFeld LIKE '%".$sb."%'";
}
//Für Oder (nur ein Begriff muss vorkommen)
$whereString=implode(" OR ",$whereArr);
//Alternativ für Und (alle Begriffe müssen vorkommen)
$whereString=implode(" AND ",$whereArr);
$query = "SELECT * FROM tabelle"
    .((strlen($whereString>0))
        ?" WHERE ".$whereString
        :"");
Gruß hpvw
 
Ich habe mir das mit der MATCH AGAINST Funktion mal angesehen, da ich auch an einer Volltextsuche arbeite. Ich habe dabei folgendes Problem:
Wenn in meiner Tabelle ein Datensatz vorhanden ist, der das Suchwort enthält, ist alles okay. Der Datensatz wird angezeigt. Gibt es nun aber mehrere Datensätze, in denen das Suchwort vorkommt, bekomme ich nichts mehr angezeigt. Woran kann das liegen?

Code:
$sql="SELECT artikel_id, bezeichnung, bild_kl FROM artikel WHERE MATCH (bezeichnung) AGAINST ('Suchwort')";

Ich hab keinen Plan mehr, sitze schon seit ein paar Stunden dabei und finde keine Lösungsansatz.

MySQL Version 3.23.55
 
Vielen Dank, es lag tatsächlich an den 50%. Hatte in meinen Büchern keinen Hinweiß in die Richtung gefunden. Hatte auch nur wenige Datensätze in der Datenbank, da ja alles noch in der Entwickliung ist. Aber jetzt funktioniert es.

Danke.
 
Zurück