Re: GIST для hstore/tsearc

Поиск
Список
Период
Сортировка
От Teodor Sigaev
Тема Re: GIST для hstore/tsearc
Дата
Msg-id 4370994F.20502@sigaev.ru
обсуждение исходный текст
Ответ на GIST для hstore/tsearch2  ("Ilia Kantor" <ilia@obnovlenie.ru>)
Список pgsql-ru-general

Ilia Kantor wrote:
> Насколько я понял, ключевой момент в GIST – хранение близких значений
> близко.
Угу

>
> Т.е INSERT при помощи penalty выбирает самое “близкое” значение и
> вставляет туда.
Угу-2

> Каким образом реализуется penalty/union в hstore/tsearch2 ?
>

Union - побитовое OR

penalty - в общем случае показывает насколько измениться некая мера при union
старого ключа с новым. Для R-tree - изменение площади bounding box.  Для
tsearch2/hstore - просто расстояние Хемминга между новым ключом и старым. Это
мера была выбрана из нескольких по рез-татам экспериментов.


> В исходниках используется функция hemdist.. Возможно, в деле замешана
> дистанция Хэмминга..
>
> Но почему она вычисляется побитно ?..

Именно именно, разновидность дистанции Хэмминга. Грубо говоря, XOR'им два ключа
и считаем кол-во единичек в результате. Т.е. в этих модулях нулевое расстояние
имеют одинаковые ключи.

> Т.е что там происходит-то толком, и почему оно работает ?!? ;)

И tsearch2 и hstore используют Signature tree - дерево бинарных сигнатур.
Указатель на страницу имеет побитовый OR всех ключей на странице.


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

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

Предыдущее
От: Oleg Bartunov
Дата:
Сообщение: Re: RE: [pgsql-ru-general] hstore - релевантность
Следующее
От: Serik
Дата:
Сообщение: srpm для SuSE 10