Canapin
(Coin-coin le Canapin)
1
フランス語の単語には、次の文字が使用されることがあります。
- Œ、œ、「œuf」(卵)や「cœur」(心臓)、「œuvre」(複数の翻訳と意味があるのでここでは詳しく説明しません、重要ではありません)のような単語で使用されます。その他。
- Æ、æ、「nævus」(ほくろの科学用語(皮膚の点であり、動物ではない)またはその他で使用されます。
æ はめったに使用されませんが(常にラテン語からの科学的/医学用語だと思いますか?)、œ はフランス語でかなり一般的です。
残念ながら、これらの特殊文字はフランス語のキーボードレイアウトには存在せず、多くの人が単に「oe」または「ae」と入力しています。
しかし、一部のユーザーはカスタムレイアウトを使用しており、スマートフォンの自動修正機能やその他のライティング支援システムは、多くの場合、「oeuvre」->「œuvre」のように、適切な「結合文字」を使用して単語を自動的に修正します。
現在、検索では「oe」と「œ」が異なる文字列として処理されるため、本来は共通であるべき結果が異なります。
例:
https://forum.monocycle.info/search?q=coeur
https://forum.monocycle.info/search?q=cœur
私の提案は、「oe」と「œ」、「OE」と「Œ」を同一の文字列として処理することです。また、「ae」と「æ」、「AE」と「Æ」についても同様です。
「いいね!」 9
sam
(Sam Saffron)
2
非常に興味深い問題ですね。@zogstrip / @j.jaffeux さん、どう思われますか?サイト設定の背後に正規化処理を追加できます。
「いいね!」 3
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)
検索におけるダイアクリティカルマーク、合字などの処理は解決済みの問題だと思っていました。そうではないようですね? 
として、私は間違いなくそれを支持します。アクセントを削除し、一般的な合字も処理するPostgreSQLの unaccent を使用できるようです。
SELECT to_tsvector('french', unaccent('œuvre poêle œuf Noël électroencéphalogramme æ Æ'));
to_tsvector
-------------------------------------------------------------------------
'ae':6,7 'electroencephalogramm':5 'noel':4 'oeuf':3 'oeuvr':1 'poel':2
(1 row)
「いいね!」 4
Canapin
(Coin-coin le Canapin)
4
そしてフランス人として、この(しかし興味深い)言語の無駄な複雑さを私と同じくらい嫌っていますか? 
少しオフオントピックなユーモアでごめんなさい
「いいね!」 4
sam
(Sam Saffron)
5
search_ignore_accents の実装を unaccent を使用するように単純に変更すべきでしょうか、それともまったく新しい設定が必要でしょうか?
アクセントを無視する実装を単純に変更する方が、PG との互換性もあるため、私はどちらかというとそちらの方が良いと思います。
「いいね!」 3
それは良い質問ですね 
では確実に機能しますが、他のロケールでは期待どおりに機能しない可能性もありますか?
/usr/share/postgresql/13/tsearch_data/unaccent.rules ファイルを確認したところ、かなり安全なようです。
search_ignore_accents 設定を postgresql の unaccent を使用するように削除することを強く支持します 
@nbianca これをリストに追加していただけますか?
「いいね!」 3
nbianca
(Bianca)
7
このPRで、古いRubyの実装をPostgresqlのunaccentに置き換えました。
「いいね!」 5
nbianca
(Bianca)
クローズされました:
8
このトピックは3日後に自動的に閉じられました。新しい返信はもう許可されていません。