Hallo zusammen,
ich nutze den "similar-topics" Mod, um ähnliche Beiträge anzeigen zu lassen.
Damit Wörter wie "muss, will, kann, habe, mein, für, soll, etc" nicht mit gesucht werden, habe ich von meinem Provider die standardmäßig von sql genutzte englische stopworslist auf eine deutschsprachige umstellen lassen.
Meine db von phpBB zeigt in phpMyAdmin als Zeichensatz "latin-1" an. Die Tabelle phpbb_topics ist in utf8_bin und vor allem das darin enthaltene (und zu durchsuchende) Fulltext-Feld topic_title hat den Zeichensatz utf8_unicode_ci.
In der stopword-Datei steht jedes Wort in einer neuen Zeile.
Klappt soweit auch gut, nur werden Wörter mit Umlauten nicht "gestoppt", egal ob ich die Datei "stopword.c" als latin-1 oder "utf-8" hochlade; also am Zeichensatz scheint es nicht zu liegen.
Kennt jemand eine Lösung, wie stopwords mit Umlauten richtig erkannt und somit von der Suche ausgeschlossen werden?
VIELEN DANK!
MySQL: stopwords mit Umlauten
- StarWolf3000
- Mitglied
- Beiträge: 1019
- Registriert: 25.07.2005 10:20
- Wohnort: Stolpen
- Kontaktdaten:
Re: MySQL: stopwords mit Umlauten
Soweit ich weiss, ist die Liste mit den Stopwords fest einprogrammiert, der Provider müsste MySQL mit der deutschen Liste neu kompilieren (falls es das ist, was du bzw. dein Provider getan hast, bitte ignorieren).
Eine Möglichkeit wäre die Umlaute in folgender Kodierung zu verwenden, so dass statt ö = ö, ü = ü usw. in der Datei steht. Kann funktionieren, muss es nicht.
Eine Möglichkeit wäre die Umlaute in folgender Kodierung zu verwenden, so dass statt ö = ö, ü = ü usw. in der Datei steht. Kann funktionieren, muss es nicht.
MOD-Einbauhilfe und Installationen über ICQ, TeamSpeak 2/3 und TeamViewer. Support nur im Forum, eingeschränkt per TeamViewer, aber nicht mehr per PN! • KB:knigge
Re: MySQL: stopwords mit Umlauten
Ja, mein Provider hat in der SQL-Konfiguration auf eine/meine neue stopwordlist verlinkt, die nach einen Neustart des Servers aktiviert/kompiliert wird ... oder so.
Da jeder "Versuch" einen kompletten Neustart des SQL-Servers und ein neues Optimieren der Tabellen benötigt, möchte ich gerne mehr Meinungen dazu haben.
Wenn ich anstatt "für" = "f%uuml;r" schreibe, funktioniert es jedenfalls nicht.
DANKE!
Kann diesen Lösungsansatz jemand bestätigen?StarWolf3000 hat geschrieben:Eine Möglichkeit wäre die Umlaute in folgender Kodierung zu verwenden, so dass statt ö = ö, ü = ü usw. in der Datei steht. Kann funktionieren, muss es nicht.
Da jeder "Versuch" einen kompletten Neustart des SQL-Servers und ein neues Optimieren der Tabellen benötigt, möchte ich gerne mehr Meinungen dazu haben.
Wenn ich anstatt "für" = "f%uuml;r" schreibe, funktioniert es jedenfalls nicht.
DANKE!
Uwe
Re: MySQL: stopwords mit Umlauten
Probier es mit ü statt %uuml; 

Re: MySQL: stopwords mit Umlauten
Guter Hinweis; hatte es echt falsch gemachtP7BB hat geschrieben:Probier es mit ü statt %uuml;

Werde morgen dann mal testen, ob das hilft

Uwe
Re: MySQL: stopwords mit Umlauten
Falls du von einem PHP-Script aus in die Datenbank speichern willst, dann sollte dir htmlspecialchars() weiterhelfen, damit beispielsweise ö, ä, ü, ", <, >,... in die entsprechende HTML-Schreibweise umgewandelt werden (ö, ä, ü, ", <, >,...). 

Re: MySQL: stopwords mit Umlauten
nee, ich habe den "Similar Topics" Mod, der nach ähnlichen Beiträgen sucht. Die zu durchsuchende Tabelle / Zelle ist topics_title.
Bei der Abfarge nutze ich eine deutsche stopwordlist, die auch problemlos funktioniert;
In der Liste steht z.B. "eine", Das bewirkt, dass das Wort "eine" nicht mitgesucht wird.
In der Liste steht auch "für" ... nur das sucht er trotzdem mit, schließt es aber nicht aus ... egal, wie ich es schreibe ... weder ü noch ü oder ü wird als ü erkannt
Bei der Abfarge nutze ich eine deutsche stopwordlist, die auch problemlos funktioniert;
In der Liste steht z.B. "eine", Das bewirkt, dass das Wort "eine" nicht mitgesucht wird.
In der Liste steht auch "für" ... nur das sucht er trotzdem mit, schließt es aber nicht aus ... egal, wie ich es schreibe ... weder ü noch ü oder ü wird als ü erkannt

Uwe