Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0645663

Browse files
committed
New features for tsearch2:
1 Comparison operation for tsquery2 Btree index on tsquery3 numnode(tsquery) - returns 'length' of tsquery4 tsquery @ tsquery, tsquery ~ tsquery - contains, contained for tsquery. Note: They don't gurantee exact result, only MAY BE, so it useful only for speed up rewrite functions5 GiST index support for @,~6 rewrite(): select rewrite(orig, what, to); select rewrite(ARRAY[orig, what, to]) from tsquery_table; select rewrite(orig, 'select what, to from tsquery_table;');7 significantly improve cover algorithm
1 parent6521ea0 commit0645663

File tree

14 files changed

+1874
-112
lines changed

14 files changed

+1874
-112
lines changed

‎contrib/tsearch2/Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.10 2005/09/27 17:13:11 tgl Exp $
1+
# $PostgreSQL: pgsql/contrib/tsearch2/Makefile,v 1.11 2005/11/08 17:08:46 teodor Exp $
22

33
MODULE_big = tsearch2
44
OBJS = dict_ex.o dict.o snmap.o stopword.o common.o prs_dcfg.o\
55
dict_snowball.o dict_ispell.o dict_syn.o\
66
wparser.o wparser_def.o\
7-
ts_cfg.o tsvector.o rewrite.o crc32.o query.o gistidx.o\
8-
tsvector_op.o rank.o ts_stat.o
7+
ts_cfg.o tsvector.o query_cleanup.o crc32.o query.o gistidx.o\
8+
tsvector_op.o rank.o ts_stat.o\
9+
query_util.o query_support.o query_rewrite.o query_gist.o
910

1011
SUBDIRS := snowball ispell wordparser
1112
SUBDIROBJS :=$(SUBDIRS:%=%/SUBSYS.o)

‎contrib/tsearch2/expected/tsearch2.out

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ psql:tsearch2.sql:401: NOTICE: argument type tsquery is only a shell
1616
psql:tsearch2.sql:543: NOTICE: type "gtsvector" is not yet defined
1717
DETAIL: Creating a shell type definition.
1818
psql:tsearch2.sql:548: NOTICE: argument type gtsvector is only a shell
19+
psql:tsearch2.sql:997: NOTICE: type "gtsq" is not yet defined
20+
DETAIL: Creating a shell type definition.
21+
psql:tsearch2.sql:1002: NOTICE: argument type gtsq is only a shell
1922
--tsvector
2023
SELECT '1'::tsvector;
2124
tsvector
@@ -342,6 +345,286 @@ SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a';
342345
'the wether':dc & ' sKies ':BC & a:d b:a
343346
(1 row)
344347

348+
select 'a' < 'b & c'::tsquery;
349+
?column?
350+
----------
351+
t
352+
(1 row)
353+
354+
select 'a' > 'b & c'::tsquery;
355+
?column?
356+
----------
357+
f
358+
(1 row)
359+
360+
select 'a | f' < 'b & c'::tsquery;
361+
?column?
362+
----------
363+
t
364+
(1 row)
365+
366+
select 'a | ff' < 'b & c'::tsquery;
367+
?column?
368+
----------
369+
f
370+
(1 row)
371+
372+
select 'a | f | g' < 'b & c'::tsquery;
373+
?column?
374+
----------
375+
f
376+
(1 row)
377+
378+
select numnode( 'new'::tsquery );
379+
numnode
380+
---------
381+
1
382+
(1 row)
383+
384+
select numnode( 'new & york'::tsquery );
385+
numnode
386+
---------
387+
3
388+
(1 row)
389+
390+
select numnode( 'new & york | qwery'::tsquery );
391+
numnode
392+
---------
393+
5
394+
(1 row)
395+
396+
create table test_tsquery (txtkeyword text, txtsample text);
397+
\set ECHO none
398+
alter table test_tsquery add column keyword tsquery;
399+
update test_tsquery set keyword = to_tsquery('default', txtkeyword);
400+
alter table test_tsquery add column sample tsquery;
401+
update test_tsquery set sample = to_tsquery('default', txtsample::text);
402+
create unique index bt_tsq on test_tsquery (keyword);
403+
select count(*) from test_tsquery where keyword < 'new & york';
404+
count
405+
-------
406+
1
407+
(1 row)
408+
409+
select count(*) from test_tsquery where keyword <= 'new & york';
410+
count
411+
-------
412+
2
413+
(1 row)
414+
415+
select count(*) from test_tsquery where keyword = 'new & york';
416+
count
417+
-------
418+
1
419+
(1 row)
420+
421+
select count(*) from test_tsquery where keyword >= 'new & york';
422+
count
423+
-------
424+
3
425+
(1 row)
426+
427+
select count(*) from test_tsquery where keyword > 'new & york';
428+
count
429+
-------
430+
2
431+
(1 row)
432+
433+
set enable_seqscan=off;
434+
select count(*) from test_tsquery where keyword < 'new & york';
435+
count
436+
-------
437+
1
438+
(1 row)
439+
440+
select count(*) from test_tsquery where keyword <= 'new & york';
441+
count
442+
-------
443+
2
444+
(1 row)
445+
446+
select count(*) from test_tsquery where keyword = 'new & york';
447+
count
448+
-------
449+
1
450+
(1 row)
451+
452+
select count(*) from test_tsquery where keyword >= 'new & york';
453+
count
454+
-------
455+
3
456+
(1 row)
457+
458+
select count(*) from test_tsquery where keyword > 'new & york';
459+
count
460+
-------
461+
2
462+
(1 row)
463+
464+
set enable_seqscan=on;
465+
select rewrite('foo & bar & qq & new & york', 'new & york'::tsquery, 'big & apple | nyc | new & york & city');
466+
rewrite
467+
----------------------------------------------------------------------------------
468+
'qq' & 'foo' & 'bar' & ( 'city' & 'york' & 'new' | ( 'nyc' | 'apple' & 'big' ) )
469+
(1 row)
470+
471+
select rewrite('moscow', 'select keyword, sample from test_tsquery'::text );
472+
rewrite
473+
---------------------
474+
'moskva' | 'moscow'
475+
(1 row)
476+
477+
select rewrite('moscow & hotel', 'select keyword, sample from test_tsquery'::text );
478+
rewrite
479+
-----------------------------------
480+
( 'moskva' | 'moscow' ) & 'hotel'
481+
(1 row)
482+
483+
select rewrite('bar & new & qq & foo & york', 'select keyword, sample from test_tsquery'::text );
484+
rewrite
485+
-------------------------------------------------------------------------------------
486+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
487+
(1 row)
488+
489+
select rewrite( ARRAY['moscow', keyword, sample] ) from test_tsquery;
490+
rewrite
491+
---------------------
492+
'moskva' | 'moscow'
493+
(1 row)
494+
495+
select rewrite( ARRAY['moscow & hotel', keyword, sample] ) from test_tsquery;
496+
rewrite
497+
-----------------------------------
498+
( 'moskva' | 'moscow' ) & 'hotel'
499+
(1 row)
500+
501+
select rewrite( ARRAY['bar & new & qq & foo & york', keyword, sample] ) from test_tsquery;
502+
rewrite
503+
-------------------------------------------------------------------------------------
504+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
505+
(1 row)
506+
507+
select keyword from test_tsquery where keyword @ 'new';
508+
keyword
509+
----------------
510+
'new' & 'york'
511+
(1 row)
512+
513+
select keyword from test_tsquery where keyword @ 'moscow';
514+
keyword
515+
----------
516+
'moscow'
517+
(1 row)
518+
519+
select keyword from test_tsquery where keyword ~ 'new';
520+
keyword
521+
---------
522+
(0 rows)
523+
524+
select keyword from test_tsquery where keyword ~ 'moscow';
525+
keyword
526+
----------
527+
'moscow'
528+
(1 row)
529+
530+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where keyword ~ query;
531+
rewrite
532+
---------------------
533+
'moskva' | 'moscow'
534+
(1 row)
535+
536+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where keyword ~ query;
537+
rewrite
538+
-----------------------------------
539+
( 'moskva' | 'moscow' ) & 'hotel'
540+
(1 row)
541+
542+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where keyword ~ query;
543+
rewrite
544+
-------------------------------------------------------------------------------------
545+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
546+
(1 row)
547+
548+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where query @ keyword;
549+
rewrite
550+
---------------------
551+
'moskva' | 'moscow'
552+
(1 row)
553+
554+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where query @ keyword;
555+
rewrite
556+
-----------------------------------
557+
( 'moskva' | 'moscow' ) & 'hotel'
558+
(1 row)
559+
560+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where query @ keyword;
561+
rewrite
562+
-------------------------------------------------------------------------------------
563+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
564+
(1 row)
565+
566+
create index qq on test_tsquery using gist (keyword gist_tp_tsquery_ops);
567+
set enable_seqscan='off';
568+
select keyword from test_tsquery where keyword @ 'new';
569+
keyword
570+
----------------
571+
'new' & 'york'
572+
(1 row)
573+
574+
select keyword from test_tsquery where keyword @ 'moscow';
575+
keyword
576+
----------
577+
'moscow'
578+
(1 row)
579+
580+
select keyword from test_tsquery where keyword ~ 'new';
581+
keyword
582+
---------
583+
(0 rows)
584+
585+
select keyword from test_tsquery where keyword ~ 'moscow';
586+
keyword
587+
----------
588+
'moscow'
589+
(1 row)
590+
591+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where keyword ~ query;
592+
rewrite
593+
---------------------
594+
'moskva' | 'moscow'
595+
(1 row)
596+
597+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where keyword ~ query;
598+
rewrite
599+
-----------------------------------
600+
( 'moskva' | 'moscow' ) & 'hotel'
601+
(1 row)
602+
603+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where keyword ~ query;
604+
rewrite
605+
-------------------------------------------------------------------------------------
606+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
607+
(1 row)
608+
609+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow') as query where query @ keyword;
610+
rewrite
611+
---------------------
612+
'moskva' | 'moscow'
613+
(1 row)
614+
615+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'moscow & hotel') as query where query @ keyword;
616+
rewrite
617+
-----------------------------------
618+
( 'moskva' | 'moscow' ) & 'hotel'
619+
(1 row)
620+
621+
select rewrite( ARRAY[query, keyword, sample] ) from test_tsquery, to_tsquery('default', 'bar & new & qq & foo & york') as query where query @ keyword;
622+
rewrite
623+
-------------------------------------------------------------------------------------
624+
'citi' & 'foo' & ( 'qq' | 'bar' ) & ( 'nyc' | ( 'appl' & 'big' | 'york' & 'new' ) )
625+
(1 row)
626+
627+
set enable_seqscan='on';
345628
select lexize('simple', 'ASD56 hsdkf');
346629
lexize
347630
-----------------

‎contrib/tsearch2/query.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#include"tsvector.h"
2424
#include"crc32.h"
2525
#include"query.h"
26-
#include"rewrite.h"
26+
#include"query_cleanup.h"
2727
#include"common.h"
2828

2929

‎contrib/tsearch2/query.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ typedef struct ITEM
1717
int4val;
1818
/* user-friendly value, must correlate with WordEntry */
1919
uint32
20-
unused:1,
20+
istrue:1,/* use for ranking in Cover */
2121
length:11,
2222
distance:20;
2323
}ITEM;

‎contrib/tsearch2/rewrite.crenamed to‎contrib/tsearch2/query_cleanup.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@
77

88
#include<float.h>
99

10-
#include"access/gist.h"
11-
#include"access/itup.h"
12-
#include"storage/bufpage.h"
13-
#include"utils/array.h"
1410
#include"utils/builtins.h"
1511

1612
#include"query.h"
17-
#include"rewrite.h"
13+
#include"query_cleanup.h"
1814

1915
typedefstructNODE
2016
{
File renamed without changes.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp