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