jenslm: mysql-volltextsuche

Beitrag lesen

Hallo,

hab folgendes Problem:
Ich möchte eine Volltextsuche haben. Das ganze soll auch mit möglichst vielen Datensätzen noch reibungslos funktionieren. Um nun die Wörter meiner Artikel zu indizieren habe ich folgendes versucht:

  
//Artikel abfragen  
$sql = "SELECT a.id AS aid, b.id, 'article' AS type,  
        CONCAT(a.title, ' ', a.text, ' ', a.category) AS search_data  
      	FROM article AS a  
 	LEFT JOIN search_time AS b  
        ON b.aid = a.id  
       	AND FIND_IN_SET('article', b.type)  
     	WHERE FIND_IN_SET('1', a.indexing)  
       	AND (b.id IS NULL OR a.date > b.date)  
  	ORDER BY a.date";  
$result = mysql_query($sql) OR die(mysql_error());  
$row = mysql_fetch_assoc($result);  

Die Tabellen dazu:
article
id | date | indexing | title | text | category
----------------------------------------------
               /\                gibt an ob der Artikel indiziert werden soll oder nicht mit Hilfe von 0 und 1!

search_time:
id | type | aid | date
----------------------
             /\              Artikel-id

Die Abfrage funktioniert soweit!
Dann möchte ich Stoppwörter einlesen. Das ganze hab ich so realisiert:

function getStopwords()  
{  
	include("".$_SERVER['DOCUMENT_ROOT']."/ordner/stopwords-de.php");  
}  

in der inkludierten datei steht:

  
$stopwords[] = "aber";  
$stopwords[] = "alle";  
//usw.  

Das sollte auch nicht das Problem sein.
Nun sollen die Suchergebnisse (search_data) noch angepasst werden und zwar so:

  
function extractWords($search_data)  
{  
	$search = array();  
	$search[] = "sonderzeichen";  
	  
	$replace = array();  
	$replace[] = "alternative";  
	  
	$search_data = trim(strtolower(stripslashes(strip_tags($search_data))));  
	//Entfernt Backslashes, Leerzeichen etc.  
	  
	$search_data = preg_replace($search, $replace, $search_data);  
	//Ersetzt die Sonderzeichen des Arrays "search" mit den Alternativen des Arrays "replace"  
	  
	$search = array();  
	$search[] = "=(\s[A-Za-z]{1,2})\s=";  
	$search[] = "= " . implode(" | ", getStopwords()) . " =i"; //soll stoppwörter entfernen...  
	$search[] = "= +=";  
	  
	$replace = array();  
	$replace[] = " ";  
	$replace[] = " ";  
	$replace[] = " ";  
	  
	$search_data = " ".str_replace(" ", "  ", $search_data)." ";  
	$search_data = trim(preg_replace($search, $replace, $search_data));  
}  

...leider funktioniert das mit den Stoppwörtern so nicht. Wir könnte ich die da einbinden?!
Und wie kann ich dann die Suchergebnisse ausgeben?

Lg, Jens