Einige französische Wörter verwenden die folgenden Zeichen:
Œ, œ, wie in œuf (Ei) oder cœur (Herz), œuvre (mehrere Übersetzungen und Bedeutungen, daher werde ich hier nicht näher darauf eingehen, es spielt keine Rolle), etc.
Æ, æ, wie in nævus (der wissenschaftliche Begriff für Muttermal (der Punkt auf der Haut, nicht das Tier) oder andere).
æ wird selten verwendet (ich glaube, es sind immer wissenschaftliche/medizinische Begriffe aus dem Lateinischen?), aber œ ist in der französischen Sprache recht verbreitet.
Leider sind diese Sonderzeichen auf dem französischen Tastaturlayout nicht vorhanden, und viele Leute schreiben einfach „oe“ oder „ae“ anstelle davon.
Aber einige Benutzer haben benutzerdefinierte Layouts, und die automatische Korrektur von Smartphones oder andere Schreibassistenzsysteme korrigieren die Wörter oft automatisch mit den richtigen „zusammengeführten Zeichen“, wie z. B. „oeuvre“ → „œuvre“.
Derzeit verarbeitet die Suche „oe“ und „œ“ als unterschiedliche Zeichenfolgen, was zu unterschiedlichen Ergebnissen führt, die eigentlich gleich sein sollten.
Mein Vorschlag ist, dass „oe“ und „œ“, „OE“ und „Œ“ als identische Zeichenfolgen verarbeitet werden sollten. Und das Gleiche gilt für „ae“ und „æ“, „AE“ und „Æ“.
SELECT to_tsvector('french', E'Cette oeuvre d\\'art n\\'est pas une œuvre.');
to_tsvector
------------------------------------
'art':4 'cet':1 'oeuvr':2 'œuvr':9
(1 row)
Ich dachte aus irgendeinem Grund, dass die Behandlung von diakritischen Zeichen, Ligaturen und Ähnlichem ein gelöstes Problem bei der Suche sei… Ich schätze nicht?
Als unterstütze ich das definitiv. Es sieht so aus, als könnten wir PostgreSQLs unaccent verwenden, das Akzente entfernt und sich auch mit gängigen Ligaturen befasst.
Und als Franzose, hasst du auch die nutzlose Komplexität dieser (wenn auch interessanten) Sprache so sehr wie ich?
Entschuldigung für den leichten Off-Topic-Humor
Sollten wir die Implementierung von search_ignore_accents einfach so ändern, dass unaccent verwendet wird, oder bräuchten wir eine komplett neue Einstellung?
Ich würde die Implementierung von ignore accents einfach ändern, da sie ohnehin mit dem übereinstimmt, was PG tut.
Das ist eine gute Frage
Das würde definitiv für funktionieren, aber es könnte andere Lokalisierungen geben, bei denen es nicht wie erwartet funktioniert?
Nachdem ich mir die Dateien /usr/share/postgresql/13/tsearch_data/unaccent.rules angesehen habe, sieht es ziemlich sicher aus.
Ich unterstütze definitiv die Entfernung und die Umstellung unserer search_ignore_accents-Einstellung auf die Verwendung von PostgreSQLs unaccent @nbianca kannst du das zu deiner Liste hinzufügen?