powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Собрать строку из tsvector
6 сообщений из 6, страница 1 из 1
Собрать строку из tsvector
    #38585782
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.
Моя задача - нормализовать текст, т.е. применить тезаурус для замены некоторых словосочетаний, потом убрать знаки препинания и незначующие слова, потом применить один или несколько словарей синонимов. Сухой остаток надо сохранить, индексировать не нужно. Понятно, от лени решил использовать FTS. Получаю tsvector и... как строку-то обратно собрать? Можно, конечно, кастовать tsvector в строку, а дальше регулярными выражениями, но как-то уж совсем уродливо.
Я нечего очевидного не упускаю? Есть ли в Postgresql фукция, конвертирующая tsvector с позиционными данными в varchar?
...
Рейтинг: 0 / 0
Собрать строку из tsvector
    #38585816
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei.Agalakov,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select * from ts_debug('мама мыла раму');
 alias |    description    | token |  dictionaries  |  dictionary  | lexemes 
-------+-------------------+-------+----------------+--------------+---------
 word  | Word, all letters | мама  | {russian_stem} | russian_stem | {мам}
 blank | Space symbols     |       | {}             | <NULL>       | <NULL>
 word  | Word, all letters | мыла  | {russian_stem} | russian_stem | {мыл}
 blank | Space symbols     |       | {}             | <NULL>       | <NULL>
 word  | Word, all letters | раму  | {russian_stem} | russian_stem | {рам}
...
Рейтинг: 0 / 0
Собрать строку из tsvector
    #38586750
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, и из лексем собрать... Как же я сам-то проглядел?
Спасибо, это пока единственный более-менее разумный вариант.
...
Рейтинг: 0 / 0
Собрать строку из tsvector
    #38586816
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Sergei.Agalakov,

попробуйте это:
Код: plsql
1.
select * from ts_debug('мама мылом мыла раму — папа моет мою карму — я мою мое мыло');


возможно, мысль использовать tsearch не по назначению вас покинет. Все-таки, у него в основе стеммер (выделитель основ) от проверки орфографии: для поиска в большинстве случаев вполне пригоден, для сложной обработки — явно нет.
...
Рейтинг: 0 / 0
Собрать строку из tsvector
    #38586870
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем мне стеммер?
Код: sql
1.
select * from ts_debug('simple','мама мылом мыла раму — папа моет мою карму — я мою мое мыло');


Не вижу проблем.
...
Рейтинг: 0 / 0
Собрать строку из tsvector
    #38671027
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот-таки случился облом. Клятый ts_debug не работает с тезаурасами. С синонимами работало.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TEXT SEARCH DICTIONARY test1 (   TEMPLATE = thesaurus,   dictfile = 'thesaurus_sample', dictionary = 'simple');
CREATE TEXT SEARCH CONFIGURATION test1 (  PARSER = "default");
ALTER TEXT SEARCH CONFIGURATION test1 ADD MAPPING FOR asciiword WITH test1, simple;

select * from to_tsvector('test1','supernovae stars are booking tickets ');

"'are':2 'cards':5 'invitation':4 'order':3 'sn':1"

select token, dictionary,lexemes from ts_debug('test1','supernovae stars are booking tickets ');

supernovae  test1       {sn}

stars       simple      {stars}

are         simple      {are}

booking     simple      {booking}

tickets     simple      {tickets}


То есть если бы я мог собрать строку из tsvectora, то тезаурусные замещения сработали бы правильно, а колонка лексем из ts_debug выдает какую-то чушь.
В документации 9.3 в главе 12.8.3 упоминается, что to_lexize не работает с тезаурасами. Видимо поэтому и ts_debug дурит. Вот не хочется свой велосипед изобретать, а видно придется самому повторять все то, что уже есть в FTS.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Собрать строку из tsvector
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]