1--Base tsvector test 2SELECT '1'::tsvector; 3 tsvector 4---------- 5 '1' 6(1 row) 7 8SELECT '1 '::tsvector; 9 tsvector 10---------- 11 '1' 12(1 row) 13 14SELECT ' 1'::tsvector; 15 tsvector 16---------- 17 '1' 18(1 row) 19 20SELECT ' 1 '::tsvector; 21 tsvector 22---------- 23 '1' 24(1 row) 25 26SELECT '1 2'::tsvector; 27 tsvector 28---------- 29 '1' '2' 30(1 row) 31 32SELECT '''1 2'''::tsvector; 33 tsvector 34---------- 35 '1 2' 36(1 row) 37 38SELECT E'''1 \\''2'''::tsvector; 39 tsvector 40---------- 41 '1 ''2' 42(1 row) 43 44SELECT E'''1 \\''2''3'::tsvector; 45 tsvector 46------------- 47 '1 ''2' '3' 48(1 row) 49 50SELECT E'''1 \\''2'' 3'::tsvector; 51 tsvector 52------------- 53 '1 ''2' '3' 54(1 row) 55 56SELECT E'''1 \\''2'' '' 3'' 4 '::tsvector; 57 tsvector 58------------------ 59 ' 3' '1 ''2' '4' 60(1 row) 61 62SELECT $$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector; 63 tsvector 64---------------------------------------- 65 'AB\\c' '\\as' 'ab\\\\c' 'ab\\c' 'abc' 66(1 row) 67 68SELECT tsvectorin(tsvectorout($$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector)); 69 tsvectorin 70---------------------------------------- 71 'AB\\c' '\\as' 'ab\\\\c' 'ab\\c' 'abc' 72(1 row) 73 74SELECT '''w'':4A,3B,2C,1D,5 a:8'; 75 ?column? 76----------------------- 77 'w':4A,3B,2C,1D,5 a:8 78(1 row) 79 80SELECT 'a:3A b:2a'::tsvector || 'ba:1234 a:1B'; 81 ?column? 82---------------------------- 83 'a':3A,4B 'b':2A 'ba':1237 84(1 row) 85 86--Base tsquery test 87SELECT '1'::tsquery; 88 tsquery 89--------- 90 '1' 91(1 row) 92 93SELECT '1 '::tsquery; 94 tsquery 95--------- 96 '1' 97(1 row) 98 99SELECT ' 1'::tsquery; 100 tsquery 101--------- 102 '1' 103(1 row) 104 105SELECT ' 1 '::tsquery; 106 tsquery 107--------- 108 '1' 109(1 row) 110 111SELECT '''1 2'''::tsquery; 112 tsquery 113--------- 114 '1 2' 115(1 row) 116 117SELECT E'''1 \\''2'''::tsquery; 118 tsquery 119--------- 120 '1 ''2' 121(1 row) 122 123SELECT '!1'::tsquery; 124 tsquery 125--------- 126 !'1' 127(1 row) 128 129SELECT '1|2'::tsquery; 130 tsquery 131----------- 132 '1' | '2' 133(1 row) 134 135SELECT '1|!2'::tsquery; 136 tsquery 137------------ 138 '1' | !'2' 139(1 row) 140 141SELECT '!1|2'::tsquery; 142 tsquery 143------------ 144 !'1' | '2' 145(1 row) 146 147SELECT '!1|!2'::tsquery; 148 tsquery 149------------- 150 !'1' | !'2' 151(1 row) 152 153SELECT '!(!1|!2)'::tsquery; 154 tsquery 155------------------ 156 !( !'1' | !'2' ) 157(1 row) 158 159SELECT '!(!1|2)'::tsquery; 160 tsquery 161----------------- 162 !( !'1' | '2' ) 163(1 row) 164 165SELECT '!(1|!2)'::tsquery; 166 tsquery 167----------------- 168 !( '1' | !'2' ) 169(1 row) 170 171SELECT '!(1|2)'::tsquery; 172 tsquery 173---------------- 174 !( '1' | '2' ) 175(1 row) 176 177SELECT '1&2'::tsquery; 178 tsquery 179----------- 180 '1' & '2' 181(1 row) 182 183SELECT '!1&2'::tsquery; 184 tsquery 185------------ 186 !'1' & '2' 187(1 row) 188 189SELECT '1&!2'::tsquery; 190 tsquery 191------------ 192 '1' & !'2' 193(1 row) 194 195SELECT '!1&!2'::tsquery; 196 tsquery 197------------- 198 !'1' & !'2' 199(1 row) 200 201SELECT '(1&2)'::tsquery; 202 tsquery 203----------- 204 '1' & '2' 205(1 row) 206 207SELECT '1&(2)'::tsquery; 208 tsquery 209----------- 210 '1' & '2' 211(1 row) 212 213SELECT '!(1)&2'::tsquery; 214 tsquery 215------------ 216 !'1' & '2' 217(1 row) 218 219SELECT '!(1&2)'::tsquery; 220 tsquery 221---------------- 222 !( '1' & '2' ) 223(1 row) 224 225SELECT '1|2&3'::tsquery; 226 tsquery 227----------------- 228 '1' | '2' & '3' 229(1 row) 230 231SELECT '1|(2&3)'::tsquery; 232 tsquery 233----------------- 234 '1' | '2' & '3' 235(1 row) 236 237SELECT '(1|2)&3'::tsquery; 238 tsquery 239--------------------- 240 ( '1' | '2' ) & '3' 241(1 row) 242 243SELECT '1|2&!3'::tsquery; 244 tsquery 245------------------ 246 '1' | '2' & !'3' 247(1 row) 248 249SELECT '1|!2&3'::tsquery; 250 tsquery 251------------------ 252 '1' | !'2' & '3' 253(1 row) 254 255SELECT '!1|2&3'::tsquery; 256 tsquery 257------------------ 258 !'1' | '2' & '3' 259(1 row) 260 261SELECT '!1|(2&3)'::tsquery; 262 tsquery 263------------------ 264 !'1' | '2' & '3' 265(1 row) 266 267SELECT '!(1|2)&3'::tsquery; 268 tsquery 269---------------------- 270 !( '1' | '2' ) & '3' 271(1 row) 272 273SELECT '(!1|2)&3'::tsquery; 274 tsquery 275---------------------- 276 ( !'1' | '2' ) & '3' 277(1 row) 278 279SELECT '1|(2|(4|(5|6)))'::tsquery; 280 tsquery 281----------------------------- 282 '1' | '2' | '4' | '5' | '6' 283(1 row) 284 285SELECT '1|2|4|5|6'::tsquery; 286 tsquery 287----------------------------- 288 '1' | '2' | '4' | '5' | '6' 289(1 row) 290 291SELECT '1&(2&(4&(5&6)))'::tsquery; 292 tsquery 293----------------------------- 294 '1' & '2' & '4' & '5' & '6' 295(1 row) 296 297SELECT '1&2&4&5&6'::tsquery; 298 tsquery 299----------------------------- 300 '1' & '2' & '4' & '5' & '6' 301(1 row) 302 303SELECT '1&(2&(4&(5|6)))'::tsquery; 304 tsquery 305--------------------------------- 306 '1' & '2' & '4' & ( '5' | '6' ) 307(1 row) 308 309SELECT '1&(2&(4&(5|!6)))'::tsquery; 310 tsquery 311---------------------------------- 312 '1' & '2' & '4' & ( '5' | !'6' ) 313(1 row) 314 315SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery; 316 tsquery 317------------------------------------------ 318 '1' & '2' & ' 4' & ( '|5' | '6 '' !|&' ) 319(1 row) 320 321SELECT $$'\\as'$$::tsquery; 322 tsquery 323--------- 324 '\\as' 325(1 row) 326 327SELECT 'a:* & nbb:*ac | doo:a* | goo'::tsquery; 328 tsquery 329-------------------------------------- 330 'a':* & 'nbb':*AC | 'doo':*A | 'goo' 331(1 row) 332 333SELECT '!!b'::tsquery; 334 tsquery 335--------- 336 !!'b' 337(1 row) 338 339SELECT '!!!b'::tsquery; 340 tsquery 341--------- 342 !!!'b' 343(1 row) 344 345SELECT '!(!b)'::tsquery; 346 tsquery 347--------- 348 !!'b' 349(1 row) 350 351SELECT 'a & !!b'::tsquery; 352 tsquery 353------------- 354 'a' & !!'b' 355(1 row) 356 357SELECT '!!a & b'::tsquery; 358 tsquery 359------------- 360 !!'a' & 'b' 361(1 row) 362 363SELECT '!!a & !!b'::tsquery; 364 tsquery 365--------------- 366 !!'a' & !!'b' 367(1 row) 368 369--comparisons 370SELECT 'a' < 'b & c'::tsquery as "true"; 371 true 372------ 373 t 374(1 row) 375 376SELECT 'a' > 'b & c'::tsquery as "false"; 377 false 378------- 379 f 380(1 row) 381 382SELECT 'a | f' < 'b & c'::tsquery as "false"; 383 false 384------- 385 t 386(1 row) 387 388SELECT 'a | ff' < 'b & c'::tsquery as "false"; 389 false 390------- 391 f 392(1 row) 393 394SELECT 'a | f | g' < 'b & c'::tsquery as "false"; 395 false 396------- 397 f 398(1 row) 399 400--concatenation 401SELECT numnode( 'new'::tsquery ); 402 numnode 403--------- 404 1 405(1 row) 406 407SELECT numnode( 'new & york'::tsquery ); 408 numnode 409--------- 410 3 411(1 row) 412 413SELECT numnode( 'new & york | qwery'::tsquery ); 414 numnode 415--------- 416 5 417(1 row) 418 419SELECT 'foo & bar'::tsquery && 'asd'; 420 ?column? 421----------------------- 422 'foo' & 'bar' & 'asd' 423(1 row) 424 425SELECT 'foo & bar'::tsquery || 'asd & fg'; 426 ?column? 427------------------------------ 428 'foo' & 'bar' | 'asd' & 'fg' 429(1 row) 430 431SELECT 'foo & bar'::tsquery || !!'asd & fg'::tsquery; 432 ?column? 433----------------------------------- 434 'foo' & 'bar' | !( 'asd' & 'fg' ) 435(1 row) 436 437SELECT 'foo & bar'::tsquery && 'asd | fg'; 438 ?column? 439---------------------------------- 440 'foo' & 'bar' & ( 'asd' | 'fg' ) 441(1 row) 442 443SELECT 'a' <-> 'b & d'::tsquery; 444 ?column? 445----------------------- 446 'a' <-> ( 'b' & 'd' ) 447(1 row) 448 449SELECT 'a & g' <-> 'b & d'::tsquery; 450 ?column? 451--------------------------------- 452 ( 'a' & 'g' ) <-> ( 'b' & 'd' ) 453(1 row) 454 455SELECT 'a & g' <-> 'b | d'::tsquery; 456 ?column? 457--------------------------------- 458 ( 'a' & 'g' ) <-> ( 'b' | 'd' ) 459(1 row) 460 461SELECT 'a & g' <-> 'b <-> d'::tsquery; 462 ?column? 463----------------------------------- 464 ( 'a' & 'g' ) <-> ( 'b' <-> 'd' ) 465(1 row) 466 467SELECT tsquery_phrase('a <3> g', 'b & d', 10); 468 tsquery_phrase 469-------------------------------- 470 'a' <3> 'g' <10> ( 'b' & 'd' ) 471(1 row) 472 473-- tsvector-tsquery operations 474SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca' as "true"; 475 true 476------ 477 t 478(1 row) 479 480SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:B' as "true"; 481 true 482------ 483 t 484(1 row) 485 486SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:A' as "true"; 487 true 488------ 489 t 490(1 row) 491 492SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:C' as "false"; 493 false 494------- 495 f 496(1 row) 497 498SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:CB' as "true"; 499 true 500------ 501 t 502(1 row) 503 504SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*C' as "false"; 505 false 506------- 507 f 508(1 row) 509 510SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*CB' as "true"; 511 true 512------ 513 t 514(1 row) 515 516SELECT 'a b:89 ca:23A,64b cb:80c d:34c'::tsvector @@ 'd:AC & c:*C' as "true"; 517 true 518------ 519 t 520(1 row) 521 522SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*C' as "true"; 523 true 524------ 525 t 526(1 row) 527 528SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*B' as "true"; 529 true 530------ 531 t 532(1 row) 533 534SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D & w:*A'::tsquery as "true"; 535 true 536------ 537 t 538(1 row) 539 540SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D <-> w:*A'::tsquery as "true"; 541 true 542------ 543 t 544(1 row) 545 546SELECT 'wa:1A wb:2D'::tsvector @@ 'w:*D <-> w:*A'::tsquery as "false"; 547 false 548------- 549 f 550(1 row) 551 552SELECT 'supernova'::tsvector @@ 'super'::tsquery AS "false"; 553 false 554------- 555 f 556(1 row) 557 558SELECT 'supeanova supernova'::tsvector @@ 'super'::tsquery AS "false"; 559 false 560------- 561 f 562(1 row) 563 564SELECT 'supeznova supernova'::tsvector @@ 'super'::tsquery AS "false"; 565 false 566------- 567 f 568(1 row) 569 570SELECT 'supernova'::tsvector @@ 'super:*'::tsquery AS "true"; 571 true 572------ 573 t 574(1 row) 575 576SELECT 'supeanova supernova'::tsvector @@ 'super:*'::tsquery AS "true"; 577 true 578------ 579 t 580(1 row) 581 582SELECT 'supeznova supernova'::tsvector @@ 'super:*'::tsquery AS "true"; 583 true 584------ 585 t 586(1 row) 587 588--phrase search 589SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 2' AS "true"; 590 true 591------ 592 t 593(1 row) 594 595SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "false"; 596 false 597------- 598 f 599(1 row) 600 601SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 3' AS "false"; 602 false 603------- 604 f 605(1 row) 606 607SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 3' AS "true"; 608 true 609------ 610 t 611(1 row) 612 613SELECT to_tsvector('simple', '1 2 1 2') @@ '1 <3> 2' AS "true"; 614 true 615------ 616 t 617(1 row) 618 619SELECT to_tsvector('simple', '1 2 11 3') @@ '1 <-> 3' AS "false"; 620 false 621------- 622 f 623(1 row) 624 625SELECT to_tsvector('simple', '1 2 11 3') @@ '1:* <-> 3' AS "true"; 626 true 627------ 628 t 629(1 row) 630 631SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; 632 true 633------ 634 t 635(1 row) 636 637SELECT to_tsvector('simple', '1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; 638 true 639------ 640 t 641(1 row) 642 643SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> (2 <-> 3)' AS "true"; 644 true 645------ 646 t 647(1 row) 648 649SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <2> (2 <-> 3)' AS "false"; 650 false 651------- 652 f 653(1 row) 654 655SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; 656 true 657------ 658 t 659(1 row) 660 661SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; 662 true 663------ 664 t 665(1 row) 666 667-- without position data, phrase search does not match 668SELECT strip(to_tsvector('simple', '1 2 3 4')) @@ '1 <-> 2 <-> 3' AS "false"; 669 false 670------- 671 f 672(1 row) 673 674select to_tsvector('simple', 'q x q y') @@ 'q <-> (x & y)' AS "false"; 675 false 676------- 677 f 678(1 row) 679 680select to_tsvector('simple', 'q x') @@ 'q <-> (x | y <-> z)' AS "true"; 681 true 682------ 683 t 684(1 row) 685 686select to_tsvector('simple', 'q y') @@ 'q <-> (x | y <-> z)' AS "false"; 687 false 688------- 689 f 690(1 row) 691 692select to_tsvector('simple', 'q y z') @@ 'q <-> (x | y <-> z)' AS "true"; 693 true 694------ 695 t 696(1 row) 697 698select to_tsvector('simple', 'q y x') @@ 'q <-> (x | y <-> z)' AS "false"; 699 false 700------- 701 f 702(1 row) 703 704select to_tsvector('simple', 'q x y') @@ 'q <-> (x | y <-> z)' AS "true"; 705 true 706------ 707 t 708(1 row) 709 710select to_tsvector('simple', 'q x') @@ '(x | y <-> z) <-> q' AS "false"; 711 false 712------- 713 f 714(1 row) 715 716select to_tsvector('simple', 'x q') @@ '(x | y <-> z) <-> q' AS "true"; 717 true 718------ 719 t 720(1 row) 721 722select to_tsvector('simple', 'x y q') @@ '(x | y <-> z) <-> q' AS "false"; 723 false 724------- 725 f 726(1 row) 727 728select to_tsvector('simple', 'x y z') @@ '(x | y <-> z) <-> q' AS "false"; 729 false 730------- 731 f 732(1 row) 733 734select to_tsvector('simple', 'x y z q') @@ '(x | y <-> z) <-> q' AS "true"; 735 true 736------ 737 t 738(1 row) 739 740select to_tsvector('simple', 'y z q') @@ '(x | y <-> z) <-> q' AS "true"; 741 true 742------ 743 t 744(1 row) 745 746select to_tsvector('simple', 'y y q') @@ '(x | y <-> z) <-> q' AS "false"; 747 false 748------- 749 f 750(1 row) 751 752select to_tsvector('simple', 'y y q') @@ '(!x | y <-> z) <-> q' AS "true"; 753 true 754------ 755 t 756(1 row) 757 758select to_tsvector('simple', 'x y q') @@ '(!x | y <-> z) <-> q' AS "true"; 759 true 760------ 761 t 762(1 row) 763 764select to_tsvector('simple', 'y y q') @@ '(x | y <-> !z) <-> q' AS "true"; 765 true 766------ 767 t 768(1 row) 769 770select to_tsvector('simple', 'x q') @@ '(x | y <-> !z) <-> q' AS "true"; 771 true 772------ 773 t 774(1 row) 775 776select to_tsvector('simple', 'x q') @@ '(!x | y <-> z) <-> q' AS "false"; 777 false 778------- 779 f 780(1 row) 781 782select to_tsvector('simple', 'z q') @@ '(!x | y <-> z) <-> q' AS "true"; 783 true 784------ 785 t 786(1 row) 787 788select to_tsvector('simple', 'x y q') @@ '(!x | y) <-> y <-> q' AS "false"; 789 false 790------- 791 f 792(1 row) 793 794select to_tsvector('simple', 'x y q') @@ '(!x | !y) <-> y <-> q' AS "true"; 795 true 796------ 797 t 798(1 row) 799 800select to_tsvector('simple', 'x y q') @@ '(x | !y) <-> y <-> q' AS "true"; 801 true 802------ 803 t 804(1 row) 805 806select to_tsvector('simple', 'x y q') @@ '(x | !!z) <-> y <-> q' AS "true"; 807 true 808------ 809 t 810(1 row) 811 812select to_tsvector('simple', 'x y q y') @@ '!x <-> y' AS "true"; 813 true 814------ 815 t 816(1 row) 817 818select to_tsvector('simple', 'x y q y') @@ '!x <-> !y' AS "true"; 819 true 820------ 821 t 822(1 row) 823 824select to_tsvector('simple', 'x y q y') @@ '!x <-> !!y' AS "true"; 825 true 826------ 827 t 828(1 row) 829 830select to_tsvector('simple', 'x y q y') @@ '!(x <-> y)' AS "false"; 831 false 832------- 833 f 834(1 row) 835 836select to_tsvector('simple', 'x y q y') @@ '!(x <2> y)' AS "true"; 837 true 838------ 839 t 840(1 row) 841 842select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> y' AS "false"; 843 false 844------- 845 f 846(1 row) 847 848select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> !y' AS "false"; 849 false 850------- 851 f 852(1 row) 853 854select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> !!y' AS "false"; 855 false 856------- 857 f 858(1 row) 859 860select strip(to_tsvector('simple', 'x y q y')) @@ '!(x <-> y)' AS "true"; 861 true 862------ 863 t 864(1 row) 865 866select strip(to_tsvector('simple', 'x y q y')) @@ '!(x <2> y)' AS "true"; 867 true 868------ 869 t 870(1 row) 871 872select to_tsvector('simple', 'x y q y') @@ '!foo' AS "true"; 873 true 874------ 875 t 876(1 row) 877 878select to_tsvector('simple', '') @@ '!foo' AS "true"; 879 true 880------ 881 t 882(1 row) 883 884--ranking 885SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a | s'); 886 ts_rank 887----------- 888 0.0911891 889(1 row) 890 891SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s'); 892 ts_rank 893----------- 894 0.0303964 895(1 row) 896 897SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s:*'); 898 ts_rank 899----------- 900 0.0911891 901(1 row) 902 903SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | sa:*'); 904 ts_rank 905----------- 906 0.0911891 907(1 row) 908 909SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a | s'); 910 ts_rank 911---------- 912 0.151982 913(1 row) 914 915SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a | s'); 916 ts_rank 917----------- 918 0.0607927 919(1 row) 920 921SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a & s'); 922 ts_rank 923---------- 924 0.140153 925(1 row) 926 927SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a & s'); 928 ts_rank 929---------- 930 0.198206 931(1 row) 932 933SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a & s'); 934 ts_rank 935----------- 936 0.0991032 937(1 row) 938 939SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a | s'); 940 ts_rank_cd 941------------ 942 0.3 943(1 row) 944 945SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s'); 946 ts_rank_cd 947------------ 948 0.1 949(1 row) 950 951SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s:*'); 952 ts_rank_cd 953------------ 954 0.3 955(1 row) 956 957SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | sa:*'); 958 ts_rank_cd 959------------ 960 0.3 961(1 row) 962 963SELECT ts_rank_cd(' a:1 sa:3C sab:2c d g'::tsvector, 'a | sa:*'); 964 ts_rank_cd 965------------ 966 0.5 967(1 row) 968 969SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a | s'); 970 ts_rank_cd 971------------ 972 0.5 973(1 row) 974 975SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a | s'); 976 ts_rank_cd 977------------ 978 0.2 979(1 row) 980 981SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a & s'); 982 ts_rank_cd 983------------ 984 0.133333 985(1 row) 986 987SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a & s'); 988 ts_rank_cd 989------------ 990 0.16 991(1 row) 992 993SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a & s'); 994 ts_rank_cd 995------------ 996 0.1 997(1 row) 998 999SELECT ts_rank_cd(' a:1 s:2A d g'::tsvector, 'a <-> s'); 1000 ts_rank_cd 1001------------ 1002 0.181818 1003(1 row) 1004 1005SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a <-> s'); 1006 ts_rank_cd 1007------------ 1008 0.133333 1009(1 row) 1010 1011SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a <-> s'); 1012 ts_rank_cd 1013------------ 1014 0.1 1015(1 row) 1016 1017SELECT ts_rank_cd(' a:1 s:2 d:2A g'::tsvector, 'a <-> s'); 1018 ts_rank_cd 1019------------ 1020 0.1 1021(1 row) 1022 1023SELECT ts_rank_cd(' a:1 s:2,3A d:2A g'::tsvector, 'a <2> s:A'); 1024 ts_rank_cd 1025------------ 1026 0.0909091 1027(1 row) 1028 1029SELECT ts_rank_cd(' a:1 b:2 s:3A d:2A g'::tsvector, 'a <2> s:A'); 1030 ts_rank_cd 1031------------ 1032 0.0909091 1033(1 row) 1034 1035SELECT ts_rank_cd(' a:1 sa:2D sb:2A g'::tsvector, 'a <-> s:*'); 1036 ts_rank_cd 1037------------ 1038 0.1 1039(1 row) 1040 1041SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:*'); 1042 ts_rank_cd 1043------------ 1044 0.1 1045(1 row) 1046 1047SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:A'); 1048 ts_rank_cd 1049------------ 1050 0 1051(1 row) 1052 1053SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:B'); 1054 ts_rank_cd 1055------------ 1056 0 1057(1 row) 1058 1059SELECT 'a:1 b:2'::tsvector @@ 'a <-> b'::tsquery AS "true"; 1060 true 1061------ 1062 t 1063(1 row) 1064 1065SELECT 'a:1 b:2'::tsvector @@ 'a <0> b'::tsquery AS "false"; 1066 false 1067------- 1068 f 1069(1 row) 1070 1071SELECT 'a:1 b:2'::tsvector @@ 'a <1> b'::tsquery AS "true"; 1072 true 1073------ 1074 t 1075(1 row) 1076 1077SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "false"; 1078 false 1079------- 1080 f 1081(1 row) 1082 1083SELECT 'a:1 b:3'::tsvector @@ 'a <-> b'::tsquery AS "false"; 1084 false 1085------- 1086 f 1087(1 row) 1088 1089SELECT 'a:1 b:3'::tsvector @@ 'a <0> b'::tsquery AS "false"; 1090 false 1091------- 1092 f 1093(1 row) 1094 1095SELECT 'a:1 b:3'::tsvector @@ 'a <1> b'::tsquery AS "false"; 1096 false 1097------- 1098 f 1099(1 row) 1100 1101SELECT 'a:1 b:3'::tsvector @@ 'a <2> b'::tsquery AS "true"; 1102 true 1103------ 1104 t 1105(1 row) 1106 1107SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "false"; 1108 false 1109------- 1110 f 1111(1 row) 1112 1113SELECT 'a:1 b:3'::tsvector @@ 'a <0> a:*'::tsquery AS "true"; 1114 true 1115------ 1116 t 1117(1 row) 1118 1119-- tsvector editing operations 1120SELECT strip('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd'::tsvector); 1121 strip 1122--------------- 1123 'a' 'asd' 'w' 1124(1 row) 1125 1126SELECT strip('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); 1127 strip 1128---------------------------------------------- 1129 'base' 'hidden' 'rebel' 'spaceship' 'strike' 1130(1 row) 1131 1132SELECT strip('base hidden rebel spaceship strike'::tsvector); 1133 strip 1134---------------------------------------------- 1135 'base' 'hidden' 'rebel' 'spaceship' 'strike' 1136(1 row) 1137 1138SELECT ts_delete(to_tsvector('english', 'Rebel spaceships, striking from a hidden base'), 'spaceship'); 1139 ts_delete 1140------------------------------------------ 1141 'base':7 'hidden':6 'rebel':1 'strike':3 1142(1 row) 1143 1144SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'base'); 1145 ts_delete 1146-------------------------------------------------------------- 1147 'hidden':6 'rebel':1 'spaceship':2,33A,34B,35C,36 'strike':3 1148(1 row) 1149 1150SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'bas'); 1151 ts_delete 1152----------------------------------------------------------------------- 1153 'base':7 'hidden':6 'rebel':1 'spaceship':2,33A,34B,35C,36 'strike':3 1154(1 row) 1155 1156SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'bases'); 1157 ts_delete 1158----------------------------------------------------------------------- 1159 'base':7 'hidden':6 'rebel':1 'spaceship':2,33A,34B,35C,36 'strike':3 1160(1 row) 1161 1162SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'spaceship'); 1163 ts_delete 1164------------------------------------------ 1165 'base':7 'hidden':6 'rebel':1 'strike':3 1166(1 row) 1167 1168SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, 'spaceship'); 1169 ts_delete 1170---------------------------------- 1171 'base' 'hidden' 'rebel' 'strike' 1172(1 row) 1173 1174SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceship','rebel']); 1175 ts_delete 1176-------------------------------- 1177 'base':7 'hidden':6 'strike':3 1178(1 row) 1179 1180SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceships','rebel']); 1181 ts_delete 1182------------------------------------------------------------- 1183 'base':7 'hidden':6 'spaceship':2,33A,34B,35C,36 'strike':3 1184(1 row) 1185 1186SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceshi','rebel']); 1187 ts_delete 1188------------------------------------------------------------- 1189 'base':7 'hidden':6 'spaceship':2,33A,34B,35C,36 'strike':3 1190(1 row) 1191 1192SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceship','leya','rebel']); 1193 ts_delete 1194-------------------------------- 1195 'base':7 'hidden':6 'strike':3 1196(1 row) 1197 1198SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel']); 1199 ts_delete 1200-------------------------- 1201 'base' 'hidden' 'strike' 1202(1 row) 1203 1204SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel','rebel']); 1205 ts_delete 1206-------------------------- 1207 'base' 'hidden' 'strike' 1208(1 row) 1209 1210SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel', NULL]); 1211ERROR: lexeme array may not contain nulls 1212SELECT unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); 1213 unnest 1214--------------------------------------------- 1215 (base,{7},{D}) 1216 (hidden,{6},{D}) 1217 (rebel,{1},{D}) 1218 (spaceship,"{2,33,34,35,36}","{D,A,B,C,D}") 1219 (strike,{3},{D}) 1220(5 rows) 1221 1222SELECT unnest('base hidden rebel spaceship strike'::tsvector); 1223 unnest 1224--------------- 1225 (base,,) 1226 (hidden,,) 1227 (rebel,,) 1228 (spaceship,,) 1229 (strike,,) 1230(5 rows) 1231 1232SELECT * FROM unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); 1233 lexeme | positions | weights 1234-----------+-----------------+------------- 1235 base | {7} | {D} 1236 hidden | {6} | {D} 1237 rebel | {1} | {D} 1238 spaceship | {2,33,34,35,36} | {D,A,B,C,D} 1239 strike | {3} | {D} 1240(5 rows) 1241 1242SELECT * FROM unnest('base hidden rebel spaceship strike'::tsvector); 1243 lexeme | positions | weights 1244-----------+-----------+--------- 1245 base | | 1246 hidden | | 1247 rebel | | 1248 spaceship | | 1249 strike | | 1250(5 rows) 1251 1252SELECT lexeme, positions[1] from unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); 1253 lexeme | positions 1254-----------+----------- 1255 base | 7 1256 hidden | 6 1257 rebel | 1 1258 spaceship | 2 1259 strike | 3 1260(5 rows) 1261 1262SELECT tsvector_to_array('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); 1263 tsvector_to_array 1264-------------------------------------- 1265 {base,hidden,rebel,spaceship,strike} 1266(1 row) 1267 1268SELECT tsvector_to_array('base hidden rebel spaceship strike'::tsvector); 1269 tsvector_to_array 1270-------------------------------------- 1271 {base,hidden,rebel,spaceship,strike} 1272(1 row) 1273 1274SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship','strike']); 1275 array_to_tsvector 1276---------------------------------------------- 1277 'base' 'hidden' 'rebel' 'spaceship' 'strike' 1278(1 row) 1279 1280SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship', NULL]); 1281ERROR: lexeme array may not contain nulls 1282-- array_to_tsvector must sort and de-dup 1283SELECT array_to_tsvector(ARRAY['foo','bar','baz','bar']); 1284 array_to_tsvector 1285------------------- 1286 'bar' 'baz' 'foo' 1287(1 row) 1288 1289SELECT setweight('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd zxc:81,567,222A'::tsvector, 'c'); 1290 setweight 1291---------------------------------------------------------- 1292 'a':1C,3C 'asd':1C 'w':5C,6C,12C,13C 'zxc':81C,222C,567C 1293(1 row) 1294 1295SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c'); 1296 setweight 1297---------------------------------------------------------- 1298 'a':1C,3C 'asd':1C 'w':5C,6C,12C,13C 'zxc':81C,222C,567C 1299(1 row) 1300 1301SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a}'); 1302 setweight 1303------------------------------------------------------ 1304 'a':1C,3C 'asd':1C 'w':5,6,12B,13A 'zxc':81,222A,567 1305(1 row) 1306 1307SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a}'); 1308 setweight 1309------------------------------------------------------ 1310 'a':1C,3C 'asd':1C 'w':5,6,12B,13A 'zxc':81,222A,567 1311(1 row) 1312 1313SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a,zxc}'); 1314 setweight 1315-------------------------------------------------------- 1316 'a':1C,3C 'asd':1C 'w':5,6,12B,13A 'zxc':81C,222C,567C 1317(1 row) 1318 1319SELECT setweight('a asd w:5,6,12B,13A zxc'::tsvector, 'c', '{a,zxc}'); 1320 setweight 1321--------------------------------- 1322 'a' 'asd' 'w':5,6,12B,13A 'zxc' 1323(1 row) 1324 1325SELECT setweight('a asd w:5,6,12B,13A zxc'::tsvector, 'c', ARRAY['a', 'zxc', NULL]); 1326ERROR: lexeme array may not contain nulls 1327SELECT ts_filter('base:7A empir:17 evil:15 first:11 galact:16 hidden:6A rebel:1A spaceship:2A strike:3A victori:12 won:9'::tsvector, '{a}'); 1328 ts_filter 1329------------------------------------------------------------- 1330 'base':7A 'hidden':6A 'rebel':1A 'spaceship':2A 'strike':3A 1331(1 row) 1332 1333SELECT ts_filter('base hidden rebel spaceship strike'::tsvector, '{a}'); 1334 ts_filter 1335----------- 1336 1337(1 row) 1338 1339SELECT ts_filter('base hidden rebel spaceship strike'::tsvector, '{a,b,NULL}'); 1340ERROR: weight array may not contain nulls 1341