Re: hstore - релевантн

Поиск
Список
Период
Сортировка
От Teodor Sigaev
Тема Re: hstore - релевантн
Дата
Msg-id 436F6CC0.4080009@sigaev.ru
обсуждение исходный текст
Ответ на hstore - релевантность  ("Ilia Kantor" <ilia@obnovlenie.ru>)
Ответы RE: [pgsql-ru-general] hstore - релевантность  ("Ilia Kantor" <ilia@obnovlenie.ru>)
Список pgsql-ru-general
> Можно ли на основе текущего кода реализовать такой поиск hstore, который
> возвращал бы значения, отсортированные
> по степени близости к искомому?
>
> Т.е, например, при поиске хэша { ‘k1’=>’v1’, ‘k2’=>’v2’, ‘k3’=>’v3’ },
> возвращались бы сначала точные совпадения,
> потом – совпадения по 2м ключам, потом по 1му ключу..
>
> Или использовалась бы какая-нибудь другая функция, определяющая
> релевантность.
>
> При этом, естественно, хочется избежать варианта, когда выбираются все
> записи, считается релевантность и выдается результат..
Написать ф-цию ранжирования не сложно, но избежать выборки всего честным образом
невозможно... Дело в том, что ф-ция ранжирования будет вызываться для всех
найденных значений.

Можно сделать так (образец есть в contrib/pg_trgm):
Создать ф-цию "похожести" двух hstore, возвращающую float от 0(нет ничего
общего) до 1 (тождественность) и операцию похожести, возвращающую true, если
аргументы похожи и false в противном случае. Операция базируется на ф-ци
измерения похожести и "уровне отсечения", хранимом в статической переменной в
сошке. Т.е. если похожесть меньше уровня - возвращаем false. Индекс также можно
обучить использовать этот уровень. Недостаток такого решения: априори не
известна величина "уровня отсечения" - если он мал, находиться будет практически
все и всегда, если велик - велика вероятность вообще не найти хотя бы
сколько-нибудь похожих записей.





--
Teodor Sigaev                                   E-mail: teodor@sigaev.ru
                                                    WWW: http://www.sigaev.ru/

В списке pgsql-ru-general по дате отправления:

Предыдущее
От: "Ilia Kantor"
Дата:
Сообщение: hstore - релевантность
Следующее
От: teodor@sigaev.ru (Teodor Sigaev)
Дата:
Сообщение: ðÒÏÓÔÉÔÅ, ÔÅÓÔ