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


'box':5 'fox':1 'sleep':2
В то же время, поиск по коннотациям или строгому порядку слов недоступен.
Зачем нужна разметка позиций в документе, если ей нельзя воспользоваться?
Или же можно, но или я невнимателен?
...
Рейтинг: 0 / 0
19.02.2015, 15:14
    #38884068
smagen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fts: позиции лексемм - зачем они?
tadmin,
позиции слов используются при расчёте релевантности.
...
Рейтинг: 0 / 0
19.02.2015, 17:10
    #38884250
grufos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fts: позиции лексемм - зачем они?
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
19.02.2015, 17:53
    #38884306
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fts: позиции лексемм - зачем они?
smagenпозиции слов используются при расчёте релевантности.
Понимаю. Но в tsquery запросить расстояние между словами я не могу. Верно?
Для поиска коннотаций близость имеет абсолютное значение, а релевантность меняется гладко, поэтому результат ненадежен.
Да и вычислять ее дорого.

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

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

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

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

Употребление слова в связке с другим позволяет (иногда) определить смысл.
Например "мамин халат" и "Мамин-Сибиряк" содержат одну одну и ту же форму одной лексемы, но с разным контекстом и семантикой. Или знание о том, что в длинном тексте упомянуты red & box & big & fox, не позволяет судить о цвете лисы и размере коробки. Абсолютные же позиции лексем в тексте дают возможность установить связку между ними, когда слова идут подряд или разделены стоп-словами. Для русского и английского, как минимум, это неплохое приближение.
...
Рейтинг: 0 / 0
19.02.2015, 23:19
    #38884509
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fts: позиции лексемм - зачем они?
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
19.02.2015, 23:22
    #38884511
Ы
Ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
fts: позиции лексемм - зачем они?
Misha Tyurin,
скорее всего, имелись в виду коллокации

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

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


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