2013-04-04 3 views
1

Я создал расширение «unaccent» в базе данных postgresql, но когда я запускаю select с использованием «unaccent», он всегда возвращает 1 строку, но с пустой строкой.Unaccent extension Postgresql 9.1, возвращающий пустую строку

select ts_lexize('unaccent', 'Hôtel'); 
ts_lexize 
----------- 

(1 row) 

Ожидаемое согласно the documentation:

select ts_lexize('unaccent','Hôtel'); 
ts_lexize 
----------- 
{Hotel} 
(1 row) 

Кроме того, когда я бегу:

SELECT unaccent('unaccent', 'Hôtel'); 

показывает:

unaccent 
---------- 
Hôtel 
(1 row) 
+1

Возможно, у вас установлен файл '.rules', верно? – didierc

+0

Да, это стандартная установка Ubuntu, она находится на /usr/share/postgresql/9.1/tsearch_data/unaccent.rules. Если я изменил словарь «безрезультатный» на другой, он говорит, что dict doens't существует, поэтому он использует правильный словарь. – Tarantula

+0

Хорошо, сначала я просто проверял очевидное. – didierc

ответ

2

Я только что обнаружил, что проблема заключалась в том, что база данных e ncoding, который использовал кодировку SQL_ASCII, поэтому я сбросил базу данных, воссоздал ее с помощью UTF-8, а затем начал работать нормально. Кажется, что unaccent не работает с SQL_ASCII.

+0

Whoa ... «Кажется, что unaccent не работает с SQL_ASCII» - это довольно заявление. Я ищу в официальных документах postgres, и об этом нет. – Victor

0

Это зависит от редактора Postgres или операционной системы. Простенько вы используете MacOS или Linux, чтобы показать результаты. Я согласился с Тарантулом. Если вы измените базу данных кодирования на UTF-8, это будет намного лучше.

Попробуйте выполнить этот выбор в редакторе Windows Postgres. Со мной работали. Получен «пустой» результат.

Hgs =)

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