2013-08-08 16 views
6

Просто запустите проблему. Я пытаюсь настроить полнотекстовый поиск по локализованному контенту (в частности, по-русски). Проблема в конфигурации по умолчанию (как и в моем обычном режиме) не касается писем. Пример:Postgresql полнотекстовый поиск tokenizer

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

'На' - это секундомер и его необходимо удалить, но он даже не уменьшен в результате в векторе результата. Если я прохожу строчную строку, все работает правильно

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

Конечно, я могу передать предварительно строчные строки, но руководство говорит

Простой словарь шаблон работает путем преобразования входных маркеров в нижний регистр и проверки это против файла стоп-слов.

Config 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 и токены, обработанные как word, как и ожидалось.

Любые идеи?

ответ

4

Проблема решена. Причина в том, что база данных была инициирована по умолчанию («C») CType и Collate. Мы использовали

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

воссоздать экземпляр и

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

воссоздать дб и простой словарь теперь работает.

Смежные вопросы