Полнотекстовый поиск в 8.3

Lists: Postg사설 토토SQL : Postg사설
From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Полнотекстовый поиск в 8.3
Date: 2008-11-21 19:32:17
Message-ID: Pine.LNX.4.64.0811212231120.7862@sn.sai.msu.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

В документации все написано и в 8.4 трех собак не будет, все решено

Олег
On Fri, 21 Nov 2008, Andrey N. Oktyabrski wrote:

> Здравствуйте.
>
> Обнаружил пренеприятнейшую вещь:
> cms1=# EXPLAIN ANALYZE SELECT id FROM _fts_text fts WHERE fts.vector @@@
> to_tsquery('некоторые | слова');
> QUERY PLAN
> -------------------------------------------------------
> Bitmap Heap Scan on _fts_text fts (cost=273.04..1261.39 rows=274 width=4)
> (actual time=14.164..6063.459 rows=26651 loops=1)
> Filter: (vector @@@ to_tsquery('некоторые | слова'::text))
> -> Bitmap Index Scan on fts_text_vector_idx (cost=0.00..272.97 rows=274
> width=0) (actual time=11.314..11.314 rows=27472 loops=1)
> Index Cond: (vector @@@ to_tsquery('некоторые | слова'::text))
> Total runtime: 6074.753 ms
> (5 rows)
>
> cms1=# EXPLAIN ANALYZE SELECT id FROM _fts_text fts WHERE fts.vector @@
> to_tsquery('некоторые | слова');
> QUERY PLAN
> -------------------------------------------------------
> Bitmap Heap Scan on _fts_text fts (cost=273.04..1261.39 rows=274 width=4)
> (actual time=18.213..845.861 rows=26651 loops=1)
> Recheck Cond: (vector @@ to_tsquery('некоторые | слова'::text))
> -> Bitmap Index Scan on fts_text_vector_idx (cost=0.00..272.97 rows=274
> width=0) (actual time=14.879..14.879 rows=27472 loops=1)
> Index Cond: (vector @@ to_tsquery('некоторые | слова'::text))
> Total runtime: 854.274 ms
> (5 rows)
>
> Планы отличаются только одной строчкой - в одном Filter, в другом Recheck
> Cond. Вот, собственно, почему они отличаются? Что можно сделать, чтобы три
> собаки работали если не так же быстро, то хотя бы не на порядок медленнее?
>
>

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru)
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83


From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Полнотекстовый поиск в 8.3
Date: 2008-11-21 22:15:47
Message-ID: Pine.LNX.4.64.0811220114200.7862@sn.sai.msu.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

On Sat, 22 Nov 2008, Andrey N. Oktyabrski wrote:

> Oleg Bartunov wrote:
>> В документации все написано и в 8.4 трех собак не будет, все решено
> Ну вот, как всегда - ослепил светлым будущим, послал учить матчасть и за сим
> откланялся ;-)
>
> Документацию-то я почитал, сейчас перечитал еще раз. Не полегчало, хотя со
> второго раза стало предельно ясно, почему Filter :-) Я думал, может патчик
> уже есть какой-нибудь на эту тему, я бы его потестировал с удовольствием. Или
> кто как решает подобную задачу внешним монтажом. А то 8.4 ждать долго еще...

нет, патчик там больно сложный получится. Там не в нас дело было, в
основном. как паллиатив, можно просто отдельный индекс сделать
по словам с разными весами.

Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru)
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83


From: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Полнотекстовый поиск в 8.3
Date: 2008-11-22 04:59:27
Message-ID: 492791AF.7060000@antora.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg사설 토토SQL : Postg사설

Здравствуйте.

Обнаружил пренеприятнейшую вещь:
cms1=# EXPLAIN ANALYZE SELECT id FROM _fts_text fts WHERE fts.vector @@@
to_tsquery('некоторые | слова');
QUERY PLAN
-------------------------------------------------------
Bitmap Heap Scan on _fts_text fts (cost=273.04..1261.39 rows=274
width=4) (actual time=14.164..6063.459 rows=26651 loops=1)
Filter: (vector @@@ to_tsquery('некоторые | слова'::text))
-> Bitmap Index Scan on fts_text_vector_idx (cost=0.00..272.97
rows=274 width=0) (actual time=11.314..11.314 rows=27472 loops=1)
Index Cond: (vector @@@ to_tsquery('некоторые | слова'::text))
Total runtime: 6074.753 ms
(5 rows)

cms1=# EXPLAIN ANALYZE SELECT id FROM _fts_text fts WHERE fts.vector @@
to_tsquery('некоторые | слова');
QUERY PLAN
-------------------------------------------------------
Bitmap Heap Scan on _fts_text fts (cost=273.04..1261.39 rows=274
width=4) (actual time=18.213..845.861 rows=26651 loops=1)
Recheck Cond: (vector @@ to_tsquery('некоторые | слова'::text))
-> Bitmap Index Scan on fts_text_vector_idx (cost=0.00..272.97
rows=274 width=0) (actual time=14.879..14.879 rows=27472 loops=1)
Index Cond: (vector @@ to_tsquery('некоторые | слова'::text))
Total runtime: 854.274 ms
(5 rows)

Планы отличаются только одной строчкой - в одном Filter, в другом
Recheck Cond. Вот, собственно, почему они отличаются? Что можно сделать,
чтобы три собаки работали если не так же быстро, то хотя бы не на
порядок медленнее?


From: "Andrey N(dot) Oktyabrski" <ano(at)antora(dot)ru>
To: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Полнотекстовый поиск в 8.3
Date: 2008-11-22 08:47:25
Message-ID: 4927C71D.4070504@antora.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Oleg Bartunov wrote:
> В документации все написано и в 8.4 трех собак не будет, все решено
Ну вот, как всегда - ослепил светлым будущим, послал учить матчасть и за
сим откланялся ;-)

Документацию-то я почитал, сейчас перечитал еще раз. Не полегчало, хотя
со второго раза стало предельно ясно, почему Filter :-) Я думал, может
патчик уже есть какой-нибудь на эту тему, я бы его потестировал с
удовольствием. Или кто как решает подобную задачу внешним монтажом. А то
8.4 ждать долго еще...