Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / tsvector -> получить список строк / 17 сообщений из 17, страница 1 из 1
05.09.2007, 13:14
    #34777385
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
есть исходная строка 'aa bb cc aa xx'
есть построенный по ней вектор 'aa':1,4 'bb':2 'cc':3 'xx':5

как получить такую выборку:

'aa'
'bb'
'cc'
'xx'
...
Рейтинг: 0 / 0
05.09.2007, 14:47
    #34777885
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
не совсем понятна цель процедуры
зачем делать из строки tsvector? зачем нужен record set?
...
Рейтинг: 0 / 0
05.09.2007, 14:51
    #34777900
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
izне совсем понятна цель процедуры
зачем делать из строки tsvector? зачем нужен record set?

Для полнотекстового поиска я строю тсвектор.

Я хочу для таблицы создать вспомогательную таблицу, которая будет содержать уникальные слова из основной.

Потому из вектоора хочу выдернуть слова
...
Рейтинг: 0 / 0
05.09.2007, 14:55
    #34777924
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
дошел до такого:

SELECT strip(to_tsvector((parse('aa bb cc xx cc')).token))

в результате правда идут все пробелы и повторяющиеся слова, но хоть так....
...
Рейтинг: 0 / 0
05.09.2007, 15:06
    #34777998
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
из parse() можно делать выборку по определенному tokid, очевидно, чтобы исключить пробелы. для уникальных слов можно сделать distinct. но все это жуткий misdesign, полнотекстовый поиск не предназначен для такого, понятное дело. я бы делал эту задачу каким-нибудь другим способом.
...
Рейтинг: 0 / 0
05.09.2007, 15:09
    #34778016
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
izиз parse() можно делать выборку по определенному tokid, очевидно, чтобы исключить пробелы. для уникальных слов можно сделать distinct. но все это жуткий misdesign, полнотекстовый поиск не предназначен для такого, понятное дело. я бы делал эту задачу каким-нибудь другим способом.

вполне может быть мисдизайн...., но каким другим?

вот такой запрос будет выбирать все уникальные слова

select distinct * from
(SELECT strip(to_tsvector((parse(xpath)).token)) from xprop ) as t;
...
Рейтинг: 0 / 0
05.09.2007, 15:14
    #34778042
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
как можно token id использовать для выбрасывания пробелов?
...
Рейтинг: 0 / 0
05.09.2007, 17:07
    #34778638
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
сходу не могу вспомнить, есть ли функция "показать токены данного парсера" в 8.2 (в 8.3 точно есть), но анализ запроса вроде такого:

test=# select * from parse('aaa bbb adsada-adasd, !$# &');
tokid | token
-------+--------------
1 | aaa
12 |
1 | bbb
12 |
2 |
12 |
16 | adsada-adasd
11 | adsada
12 | -
11 | adasd
12 | , !$#
12 | &
(12 rows)

показывает, что вам нужно выбрасывать tokid = 12.

Еще, кстати, в tsearch2 есть функции для анализа состояния GiST индекса -- в частности, можно узнать количество уникальных токенов.
...
Рейтинг: 0 / 0
05.09.2007, 17:08
    #34778641
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
сорри, при копипасте из psql побились русские буквы, так что пропали токены nlword
...
Рейтинг: 0 / 0
05.09.2007, 17:43
    #34778816
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
кстати, в tsvector уже сидят формы слов обработанные и пригодные для поиска или просто выделенные из текста лексемы?
...
Рейтинг: 0 / 0
05.09.2007, 18:14
    #34778953
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
это вам нужно документацию хорошенько и с самого начала почитать

test=# select to_tsvector('utf8_russian', 'преклонился');
to_tsvector
------------------
'преклониться':1
(1 row)

tsvector содержит, разумеется, нормализованные в соотв-ии с заданным словарем лексемы.
...
Рейтинг: 0 / 0
05.09.2007, 18:45
    #34779064
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
izэто вам нужно документацию хорошенько и с самого начала почитать

test=# select to_tsvector('utf8_russian', 'преклонился');
to_tsvector
------------------
'преклониться':1
(1 row)

tsvector содержит, разумеется, нормализованные в соотв-ии с заданным словарем лексемы.

Именно оно.
Потому я и хотел взять слова из вектора....Но не пойму как их оттуда вытащить.
...
Рейтинг: 0 / 0
05.09.2007, 18:49
    #34779078
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
Winnipuh izэто вам нужно документацию хорошенько и с самого начала почитать

test=# select to_tsvector('utf8_russian', 'преклонился');
to_tsvector
------------------
'преклониться':1
(1 row)

tsvector содержит, разумеется, нормализованные в соотв-ии с заданным словарем лексемы.

Именно оно.
Потому я и хотел взять слова из вектора....Но не пойму как их оттуда вытащить.

у меня кстати результат такой
-------------------------------
'преклон':1
...
Рейтинг: 0 / 0
05.09.2007, 19:37
    #34779248
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
это stemming
у вас плохо настроен tsearch2
...
Рейтинг: 0 / 0
05.09.2007, 19:39
    #34779256
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
izэто stemming
у вас плохо настроен tsearch2

плохо на русский язык или вообще?
Русский пока мне не нужен, надо хотя бы с английским разобраться
...
Рейтинг: 0 / 0
05.09.2007, 19:50
    #34779280
iz
iz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
судя по приведенному вами примеру, русский настроен плохо
о других языках судить не могу
...
Рейтинг: 0 / 0
05.09.2007, 19:54
    #34779287
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tsvector -> получить список строк
izсудя по приведенному вами примеру, русский настроен плохо
о других языках судить не могу

спасибо за содействие!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / tsvector -> получить список строк / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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