Mailinglisten-Archive |
Torsten Berger - WahnBerlin schrieb: >>... schließlich sind normalerweise & und ; keine Wortzeichen, >>werden also von MySQL als Trenner behandelt > > Dafür erst mal vielen Dank. Da lag genau mein Denkfehler, ich hab > zwar z.B. das "&" als "besonderes" Zeichen erkannt, aber nicht > bedacht, dass es gar nicht erst zu den indizierten Zeichen gehört. ja die Suche in Boolean Mode geht ja auch anders ... >>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 > > > Allerdings verstehe ich dann nicht wieso z.B. die Suche nach > "mögen" genau dieses findet? Müsste dann nicht nach "m ouml > gen" gesucht werden? Letzteres führt nicht zum Ergebnis, ersteres > schon. Das m als einzelner Buchstabe wird doch gar nicht > gelistet, oder doch? Wieso wird die Kobination gefunden? Ich > würde es gern verstehen, wenn ich auch jetzt (mit Deiner Hilfe) > für *dieses* Projekt eine hinreichende Lösung gebastelt habe: weil du ihm eben durch " sagst er soll genau das finden! das geht auch mit '"ich mag"': findet ' ... ich mag Blumen ...' aber nicht ' ... mag ich nicht!' hingegen 'ich mag' findet beides (abgesehen davon das die Worte jetzt zu kurz sind ...) > $helparray = explode (' ', $gesucht); > > foreach($helparray as $ding) { > > $vor = substr($ding,0,1); > $vor = ($vor == "-" || $vor == "+")?$vor:""; > $ding = ($vor == "-" || $vor == "+")?substr($ding,1):$ding; > > if ( $ding !== htmlentities( $ding ) ) { > > $ding = str_replace('*','',$ding); > $search[] = $vor.'"'.htmlentities( $ding ).'"'; > > } else { > > $search[] = $vor.$ding; > > } > } > > $sql_suche = implode( ' ', $search ); > > Damit habe ich die BOOLEAN-Operatoren gerettet und * in der > Phrase ausgeschaltet (da dort nur störend und nicht nötig. wenn du es so machst musst du aber auch " raus filtern weil wenn jemand sucht: "MySQL Volltext" hast du ""MySQL" "Volltext"" außerdem würde ich " nur um Wörter mit HTML-Entities machen, weil die " eine andere Such-Methode erfordern, die meines Erachtens langsamer sein müsste. >>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. > > > An das Suchen hab ich am Anfang nicht gedacht. An diese Zeichen > schon gar nicht. Ich wollte mit dem sofortigen Wandeln in > HTML-Zeichen sicherstellen, dass die Ausgabe unabhängig vom > verwendeten Zeichensatz des Systems ist. Wird vom MySQL-Server > ein Latin1 Zeichen gegeben, aber der empfangene Rechner hat einen > anderen am laufen, kann es zu Schwierigkeiten kommen. Bei > westlichen Zeichen eher selten ein Problem, aber die ganzen > osteuropäischen machen immer wieder Murx. Und: ja, ich weiß, dass > ich z.B. im Browser den Zeichensatz bestimmen kann etc. also ich sag einfach meinem Template System bei jedem String das er es in HTML-Entities umwandeln soll -- 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