Søgning i MySQL, spørgsmål vedr. REGEXP
Jeg har en søgemaskine, som bruges til at søge i en MySQL database. Det den skal kunne er, at modtage et eller flere ord og så søge i to forskellige tabeller. Desuden skal den kunne returnere et svar selvom det søgte kun er en del af et ord. Søges der f.eks. på "bord" skal søgningen returnere alle ord hvor bord indgår, eks: pakkebord, skrivebord, bordskåner osv. Den version jeg viser herunder kan ikke det, den søger kun på ordet bord og ikke på ord hvori bord indgår. Mit spørgsmål går på om "REGEXP" kan bruges istedet for "LIKE" og om det vil returnere det ønskede. Jeg vil også meget gerne vide, om jeg kan gøre det her smartere end jeg gør det da jeg har på fornemmelsen at min metode er lidt "sløv"..<?PHP
//get the search string from the post
$search_string = $_POST['search_string'];
//divide the search string into tokens
$words = explode(" ", $search_string);
// ********* Søgning i Tabellen Produkter *************
$query = "SELECT prod_id, prod_name, prod_form_price, prod_new_price, nrofpic FROM prods WHERE (";
$first=true;
foreach($words as $word){
if(!$first){
$query =$query."OR ";
} else{
$first=false;
}
$query = $query."prod_desc LIKE '%$word%' OR prod_name LIKE '%$word%'";
}
$query= $query.");";
$results = mysql_query($query,$db) or die("Databasefejl ved søgning!");
// ********* Søgning i Tabellen Kategorier *************
$queryCat = "SELECT cat_id, cat_name FROM cats WHERE (";
$first=true;
foreach($words as $word){
if(!$first){
$queryCat =$queryCat."OR ";
} else{
$first=false;
}
$queryCat = $queryCat."cat_name LIKE '%$word%'";
}
$queryCat= $queryCat.");";
$resultsCat = mysql_query($queryCat,$db) or die("Databasefejl ved søgning!");
?>
