• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Volltextsuche: Diakritische Zeichen

Degers

Mitglied
Für ein Projekt versuche ich eine Suche zu realisieren, die ohne Rücksichtnahme auf etwaige "Buchstabenzusätze" funktioniert. Um es an einem Beispiel klar zu machen, die Suche nach '123c123' soll nicht nur nach '123c123' suchen.
123c123 - 123ć123, 123č123
Oder
123z123 - 123ž123

Da finde ich keinen wirklichen Ansatz. Eine erste Überlegung war beim Auftauchen eines der relevanten Buchstaben ein Array mit allen Varianten durch die Suche zu jagen, was mir jedoch nicht sehr geschickt erscheint.

Hat jemand Ideen für andere Ansätze? Danke im Vorraus.
 
Werbung:
Pardon, das sind natürlich relevante Informationen. Ich durchsuche eine MySQL-Tabelle des Typs MyISAM und der Kollation latin1_german1_ci. Was hinsichtlich meiner Inhalte tatsächlich suboptimal sein könnte, bisher jedoch noch nicht aufgefallen bzw. gestört hat.
Bei dem Versuch eine andere Kollation, utf8 auszuwählen, war es mir nicht mehr möglich die geänderte Spalte in den Fulltext-Index aufzunehmen.
Den Thread führe ich mir mal zu Gemüte, danke.
 
Werbung:
Auch nach Umstellung auf eine UTF8 Kollation werden die Zeichen nicht gefunden, könnte es ein Problem sein, dass die Kodierung der Suchanfrage nicht UTF8 sondern ANSI ist? Ansonsten, gibt es evtl. andere Lösungsansätze? Die Lösung durch eine korrekte Kodierung wäre wohl ideal.
 
Setz Du am Anfang Deines Skriptes die Kodierung der Verbindung zum MySQL Server auf UTF8 (SET NAMES utf8)? Deine Kollation ist sicher die mit ci (case insensitive) am Ende?

Habe es bei mir auch mal getestet, und hatte eigentlich keine Probleme. Einfach alles was geht auf utf8. ;D
 
Die Datenbank ist auf utf8_unicode_ci, die Skripte auf UTF8 ohne BOM. Die Verbiendung zum Server hatte ich nicht angepasst, bin aber auch noch am Probieren wie das funktioniert, da noch nie gemacht.
mysql_query("SET NAMES 'utf8'", $request) sagt mir Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource.
​Wie genau muss das eingebunden werden?
 
Werbung:
Ich lasse das immer als erste MySQL Query laufen, nachdem die Verbindung zur Datenbank hergestellt wurde (sorry, habe mich mit "am Anfang des Skriptes" etwas ungeschickt ausgedrueckt).
PHP:
$con = mysql_connect('localhost', 'root', 'password');
mysql_select_db('database');
mysql_query('SET NAMES utf8');
 
Danke, nun war wirklich alles auf utf8, eine Volltextsuche nach 'ucitelj' wird 'učitelj' nicht gefunden.
Allerdings fiel mir auf beim Umstellen der Datenbank: Nach der Umstellung auf UTF8 ist das obige diakritische Zeichen č, und zwar im phpMyAdmin.
Es gibt auch einen speziellen Zeichensatz für die benötigten Sprachen, den ich probieren werde. Ist es sicher, dass UTF8 mit den im Eingangsposting genannten Zeichen "kompatibel" ist?
 
Danke für die Unterstützung, hat nun funktioniert. Eine inkludierte Datei war noch nicht auf UTF8. Nun funktioniert alles wie gewollt, mit der Ausnahme von đ, was aber wohl einfach keine Verwandtschaft mit d hat. Musste noch einiges in der Datenbank repariert werden nach der Umstellung, jetzt ist alles wie gewünscht. :)
 
Werbung:
Zurück
Oben