2013-08-08 35 views
6

Chỉ cần gặp sự cố. Tôi đang cố gắng thiết lập tìm kiếm toàn văn bản trên nội dung được bản địa hóa (đặc biệt là tiếng Nga). Vấn đề là cấu hình mặc định (cũng như tùy chỉnh của tôi) không xử lý các trường hợp chữ cái. Ví dụ:Mã thông báo tìm kiếm toàn văn Postgresql

SELECT * from to_tsvector('test_russian', 'На рынке появились новые рублевые облигации'); 
> 'На':1 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2 

'На' là một từ dừng và cần được loại bỏ, nhưng thậm chí không được hạ thấp trong vector kết quả. Nếu tôi vượt qua lowercased chuỗi, tất cả các hoạt động đúng

SELECT * from to_tsvector('test_russian', 'на рынке появились новые рублевые облигации'); 
> 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2 

Chắc chắn tôi có thể vượt qua chuỗi trước lowercased, nhưng tay nói

Mẫu từ điển đơn giản hoạt động bằng cách chuyển đổi các đầu vào thẻ để giảm trường hợp và kiểm tra nó chống lại một tập tin của các từ dừng lại.

Config russian_test trông như thế này:

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; 

Nhưng tôi thực sự nhận được chính xác kết quả tương tự với built-in russian config.

Tôi đã thử ts_debug và mã thông báo được coi là word, như tôi mong đợi.

Bất kỳ ý tưởng nào?

Trả lời

4

Sự cố được giải quyết. Lý do là cơ sở dữ liệu được khởi tạo với mặc định ("C") CTypeCollate. Chúng tôi sử dụng

initdb --locale=UTF-8 --lc-collate=UTF-8 --encoding=UTF-8 -U pgsql *PGSQL DATA DIR* 

để tái thẩm và

CREATE DATABASE "scratch" 
    WITH OWNER "postgres" 
    ENCODING 'UTF8' 
    LC_COLLATE = 'ru_RU.UTF-8' 
    LC_CTYPE = 'ru_RU.UTF-8'; 

để tái tạo db và từ điển đơn giản hiện đang làm việc.

Các vấn đề liên quan