問題が発生するだけです。ローカライズされたコンテンツ (特にロシア語) で全文検索を設定しようとしています。問題は、デフォルトの構成 (および私のカスタム) が大文字と小文字を区別しないことです。例:
SELECT * from to_tsvector('test_russian', 'На рынке появились новые рублевые облигации');
> 'На':1 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2
'На' はストップワードであり、削除する必要がありますが、結果ベクトルでは小文字化されません。小文字の文字列を渡すと、すべて正常に動作します
SELECT * from to_tsvector('test_russian', 'на рынке появились новые рублевые облигации');
> 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2
確かに小文字化された文字列を渡すことができますが、マニュアルには
単純な辞書テンプレートは、入力トークンを小文字に変換し、それをストップ ワードのファイルと照合することによって機能します。
構成russian_test
は次のようになります。
create text search CONFIGURATION test_russian (COPY = 'russian');
CREATE TEXT SEARCH DICTIONARY russian_simple (
TEMPLATE = pg_catalog.simple,
STOPWORDS = russian
);
CREATE TEXT SEARCH DICTIONARY russian_snowball (
TEMPLATE = snowball,
Language = russian,
StopWords = russian
);
alter text search configuration test_russian
alter mapping for word
with russian_simple,russian_snowball;
しかし、実際には組み込みの構成でまったく同じ結果が得られrussian
ます。
予想通り、 ts_debug と tokens を として試してみましword
た。
何か案は?