Mailinglisten-Archive |
Torsten Berger - WahnBerlin schrieb: > Hallo, > > es ist wohl wirklich ein Fehler in MySQL. Ich hab noch ein wenig > rumprobiert und nun mal meine Suchworte in Anführungszeichen > (also als mehrere Phrasen) gesetzt: naja musst du doch, wie sollte es sonst gehen? schließlich sind normalerweise & und ; keine Wortzeichen, werden also von MySQL als Trenner behandelt ein 'mögen' wäre dann wie ein 'm ouml gen' und die Wörter in der DB werden ja ebenso Indiziert, also jedes ouml als Wort. wir mögen MySQL => wir mögen MySQL => ouml, MySQL steht also nur 'ouml' und 'MySQL' im Index da fällt einem natürlich auch gleich auf das ein Volltext-Index auf einen Text mit HTML-Entities wohl ungleich größer sein wird als einer ohne. Und vor allem auch viel weniger effektiv. > SELECT n.ID AS id, n.top_content_ID, n.titel, n.teaser > FROM news AS n > WHERE n.status = 'online' > AND n.von_datum <= NOW() > AND n.bis_datum >= NOW() > AND MATCH(n.titel,n.teaser,n.text) > AGAINST ('"mögen" "Wort"' IN BOOLEAN MODE) > LIMIT 26 > > Das funktioniert, also nun wird nur noch "mögen" gefunden nicht > mehr ein alleiniges ö. Allerdings habe ich nun versucht auch das > "-" (nicht vorhanden) und das "+" (vorhanden) mit einzubeziehen, > das führt wieder zu Fehlern: mhm ... und AGAINST ('"mögen"' IN BOOLEAN MODE) funktioniert nicht? > Ein Plus funktioniert, auch in Kombination mit anderen Worten. > Das Problem ist das Minus: stelle ich vor das "mögen" ein > Minus, werden wieder *alle* Texte rausgefiltert, die irgendwo ein > ö enthalten, da nutzt dann auch das setzen in Anführungszeichen > nichts mehr. was hast du denn probiert? AGAINST ('-"mögen" +Wort' IN BOOLEAN MODE) oder AGAINST ('"-mögen" +Wort' IN BOOLEAN MODE) > Alles sehr mysteriös. Ich werde nun das kleinere Übel wählen und > nur eine Suche nach "muss vorhanden sein" ermöglichen und dabei > die einzelnen Suchworte als einzelne Phrasen übergeben. du kannst ja überprüfen ob du HTML-Entities im wort hast if ( $string !== htmlentities( $string ) ) $search[] = '"' . htmlentities( $string ) . '"'; 'AGAINST (\'' . implode( ' ', $search ) . '\' IN BOOLEAN MODE)' AGAINST ('"mögen" Wort' IN BOOLEAN MODE) -- Sebastian Mendel www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com www.sf.net/projects/phpdatetime www.sf.net/projects/phptimesheet -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive