powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / fts: позиции лексемм - зачем они?
10 сообщений из 10, страница 1 из 1
fts: позиции лексемм - зачем они?
    #38884013
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В tsvector размечены позиции лексемм.
Код: plsql
1.
select to_tsvector('fox sleeping in a box');


'box':5 'fox':1 'sleep':2
В то же время, поиск по коннотациям или строгому порядку слов недоступен.
Зачем нужна разметка позиций в документе, если ей нельзя воспользоваться?
Или же можно, но или я невнимателен?
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884068
smagen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,
позиции слов используются при расчёте релевантности.
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884250
Фотография grufos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,
вот две хорошие статьи по реализации FTS в PostgreSQL
http://www.sai.msu.su/~megera/postgres/talks/fts_pgsql_intro.html
http://rus-linux.net/lib.php?name=/MyLDP/subd/pgfts.html
в PostgreSQL есть возможность маркировать слова принадлежащими к разным секциям, которых правда всего может быть 4
Каждой секции можно назначать свой вес и уже потом получать лучшую релевантность поиска.
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884306
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smagenпозиции слов используются при расчёте релевантности.
Понимаю. Но в tsquery запросить расстояние между словами я не могу. Верно?
Для поиска коннотаций близость имеет абсолютное значение, а релевантность меняется гладко, поэтому результат ненадежен.
Да и вычислять ее дорого.

Теоретически, для выявления близко расположенных слов можно поместить нормализованные лексеммы и их позиции из tsvector в jsonb. Но тогда теряется функционал FTS. Придется "в лоб" сравнивать лексеммы.

2 all: кто-нибудь делал подобные попытки?

grufos,
Про set_weight я знаю, но для выявления коннотаций в произвольных текстах четырех маркеров будет явно недостаточно.
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884490
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,

более формально можно определить "коннотаций" в вашем случае
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884502
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha Tyurin,

Употребление слова в связке с другим позволяет (иногда) определить смысл.
Например "мамин халат" и "Мамин-Сибиряк" содержат одну одну и ту же форму одной лексемы, но с разным контекстом и семантикой. Или знание о том, что в длинном тексте упомянуты red & box & big & fox, не позволяет судить о цвете лисы и размере коробки. Абсолютные же позиции лексем в тексте дают возможность установить связку между ними, когда слова идут подряд или разделены стоп-словами. Для русского и английского, как минимум, это неплохое приближение.
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884509
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,

http://www.postgresql.org/docs/9.4/static/textsearch-controls.html
ну, если быть точными, то позиции нам нужны тут

12.3.3. Ranking Search Results

ts_rank_cd

бла бла

This function requires lexeme positional information to perform its calculation.

--
но. тут же читаем:
"
However, the concept of relevancy is vague and very application-specific. Different applications might require additional information for ranking, e.g., document modification time. The built-in ranking functions are only examples. You can write your own ranking functions and/or combine their results with additional factors to fit your specific needs.
"

You can write your own ranking functions

в приделах движка, да.

--
но интересно, где вам надо такую "точную" релевантность. чем плохо показать и

автор"мамин халат" и "Мамин-Сибиряк"

сразу. Юзер и сам не знает, что ему надо, а уж мы и тем более. пусть решает может сам юзер?
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884511
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
Misha Tyurin,
скорее всего, имелись в виду коллокации

tadmin,
для поиска коллокаций есть разные инструменты, можно, напр., попробовать прикрутить к PostgreSQL модуль Text::NSP с CPAN.
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884513
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы,

ну да, возможно и так
...
Рейтинг: 0 / 0
fts: позиции лексемм - зачем они?
    #38884670
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы - прав. Имел в виду коллокации.
За Text:NSP - отдельное спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / fts: позиции лексемм - зачем они?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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