Skip site navigation (1) Skip section navigation (2)

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

From: Teodor Sigaev <teodor(at)sigaev(dot)ru>
To: Ilia Kantor <ilia(at)obnovlenie(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: hstore - релевантн
Date: 2005-11-07 15:03:28
Message-ID: 436F6CC0.4080009@sigaev.ru (view raw or flat)
Thread:
Lists: 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(at)sigaev(dot)ru
                                                    WWW: http://www.sigaev.ru/

In response to

Responses

pgsql-ru-general by date

Next:From: Teodor SigaevDate: 2005-11-07 16:59:59
Subject: ,
Previous:From: Ilia KantorDate: 2005-11-07 13:54:58
Subject: hstore - релевантность

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group