MySQL: stopwords mit Umlauten

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

MySQL: stopwords mit Umlauten

Beitrag von uwe.ha »

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!
Uwe
Benutzeravatar
StarWolf3000
Mitglied
Beiträge: 1019
Registriert: 25.07.2005 10:20
Wohnort: Stolpen
Kontaktdaten:

Re: MySQL: stopwords mit Umlauten

Beitrag von StarWolf3000 »

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.
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
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: MySQL: stopwords mit Umlauten

Beitrag von uwe.ha »

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.
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.
Kann diesen Lösungsansatz jemand bestätigen?
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
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: MySQL: stopwords mit Umlauten

Beitrag von P7BB »

Probier es mit ü statt %uuml; :P
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: MySQL: stopwords mit Umlauten

Beitrag von uwe.ha »

P7BB hat geschrieben:Probier es mit ü statt %uuml; :P
Guter Hinweis; hatte es echt falsch gemacht :oops:
Werde morgen dann mal testen, ob das hilft ;-)
Uwe
P7BB
Mitglied
Beiträge: 383
Registriert: 15.07.2008 19:40

Re: MySQL: stopwords mit Umlauten

Beitrag von P7BB »

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 (&ouml, &auml, &uuml, &quot, &lt, &gt,...). ;)
uwe.ha
Mitglied
Beiträge: 834
Registriert: 18.05.2001 02:00

Re: MySQL: stopwords mit Umlauten

Beitrag von uwe.ha »

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 &uuml; oder ü wird als ü erkannt :(
Uwe
Antworten

Zurück zu „Coding & Technik“