~ubuntu-branches/ubuntu/oneiric/postgresql-9.1/oneiric-security

« back to all changes in this revision

Viewing changes to src/test/regress/expected/tsearch.out

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- Sanity checks for text search catalogs
 
3
--
 
4
-- NB: we assume the oidjoins test will have caught any dangling links,
 
5
-- that is OID or REGPROC fields that are not zero and do not match some
 
6
-- row in the linked-to table.  However, if we want to enforce that a link
 
7
-- field can't be 0, we have to check it here.
 
8
-- Find unexpected zero link entries
 
9
SELECT oid, prsname
 
10
FROM pg_ts_parser
 
11
WHERE prsnamespace = 0 OR prsstart = 0 OR prstoken = 0 OR prsend = 0 OR
 
12
      -- prsheadline is optional
 
13
      prslextype = 0;
 
14
 oid | prsname 
 
15
-----+---------
 
16
(0 rows)
 
17
 
 
18
SELECT oid, dictname
 
19
FROM pg_ts_dict
 
20
WHERE dictnamespace = 0 OR dictowner = 0 OR dicttemplate = 0;
 
21
 oid | dictname 
 
22
-----+----------
 
23
(0 rows)
 
24
 
 
25
SELECT oid, tmplname
 
26
FROM pg_ts_template
 
27
WHERE tmplnamespace = 0 OR tmpllexize = 0;  -- tmplinit is optional
 
28
 oid | tmplname 
 
29
-----+----------
 
30
(0 rows)
 
31
 
 
32
SELECT oid, cfgname
 
33
FROM pg_ts_config
 
34
WHERE cfgnamespace = 0 OR cfgowner = 0 OR cfgparser = 0;
 
35
 oid | cfgname 
 
36
-----+---------
 
37
(0 rows)
 
38
 
 
39
SELECT mapcfg, maptokentype, mapseqno
 
40
FROM pg_ts_config_map
 
41
WHERE mapcfg = 0 OR mapdict = 0;
 
42
 mapcfg | maptokentype | mapseqno 
 
43
--------+--------------+----------
 
44
(0 rows)
 
45
 
 
46
-- Look for pg_ts_config_map entries that aren't one of parser's token types
 
47
SELECT * FROM
 
48
  ( SELECT oid AS cfgid, (ts_token_type(cfgparser)).tokid AS tokid
 
49
    FROM pg_ts_config ) AS tt
 
50
RIGHT JOIN pg_ts_config_map AS m
 
51
    ON (tt.cfgid=m.mapcfg AND tt.tokid=m.maptokentype)
 
52
WHERE
 
53
    tt.cfgid IS NULL OR tt.tokid IS NULL;
 
54
 cfgid | tokid | mapcfg | maptokentype | mapseqno | mapdict 
 
55
-------+-------+--------+--------------+----------+---------
 
56
(0 rows)
 
57
 
 
58
-- test basic text search behavior without indexes, then with
 
59
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
 
60
 count 
 
61
-------
 
62
   158
 
63
(1 row)
 
64
 
 
65
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
 
66
 count 
 
67
-------
 
68
    17
 
69
(1 row)
 
70
 
 
71
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
 
72
 count 
 
73
-------
 
74
     6
 
75
(1 row)
 
76
 
 
77
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
 
78
 count 
 
79
-------
 
80
    98
 
81
(1 row)
 
82
 
 
83
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
 
84
 count 
 
85
-------
 
86
    23
 
87
(1 row)
 
88
 
 
89
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
 
90
 count 
 
91
-------
 
92
    39
 
93
(1 row)
 
94
 
 
95
SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
 
96
 count 
 
97
-------
 
98
   494
 
99
(1 row)
 
100
 
 
101
create index wowidx on test_tsvector using gist (a);
 
102
SET enable_seqscan=OFF;
 
103
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
 
104
 count 
 
105
-------
 
106
   158
 
107
(1 row)
 
108
 
 
109
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
 
110
 count 
 
111
-------
 
112
    17
 
113
(1 row)
 
114
 
 
115
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
 
116
 count 
 
117
-------
 
118
     6
 
119
(1 row)
 
120
 
 
121
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
 
122
 count 
 
123
-------
 
124
    98
 
125
(1 row)
 
126
 
 
127
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
 
128
 count 
 
129
-------
 
130
    23
 
131
(1 row)
 
132
 
 
133
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
 
134
 count 
 
135
-------
 
136
    39
 
137
(1 row)
 
138
 
 
139
SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
 
140
 count 
 
141
-------
 
142
   494
 
143
(1 row)
 
144
 
 
145
RESET enable_seqscan;
 
146
DROP INDEX wowidx;
 
147
CREATE INDEX wowidx ON test_tsvector USING gin (a);
 
148
SET enable_seqscan=OFF;
 
149
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh';
 
150
 count 
 
151
-------
 
152
   158
 
153
(1 row)
 
154
 
 
155
SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh';
 
156
 count 
 
157
-------
 
158
    17
 
159
(1 row)
 
160
 
 
161
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt';
 
162
 count 
 
163
-------
 
164
     6
 
165
(1 row)
 
166
 
 
167
SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt';
 
168
 count 
 
169
-------
 
170
    98
 
171
(1 row)
 
172
 
 
173
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)';
 
174
 count 
 
175
-------
 
176
    23
 
177
(1 row)
 
178
 
 
179
SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)';
 
180
 count 
 
181
-------
 
182
    39
 
183
(1 row)
 
184
 
 
185
SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*';
 
186
 count 
 
187
-------
 
188
   494
 
189
(1 row)
 
190
 
 
191
RESET enable_seqscan;
 
192
INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH');
 
193
SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10;
 
194
 word | ndoc | nentry 
 
195
------+------+--------
 
196
 qq   |  108 |    108
 
197
 qt   |  102 |    102
 
198
 qe   |  100 |    100
 
199
 qh   |   98 |     98
 
200
 qw   |   98 |     98
 
201
 qa   |   97 |     97
 
202
 ql   |   94 |     94
 
203
 qs   |   94 |     94
 
204
 qi   |   92 |     92
 
205
 qr   |   92 |     92
 
206
(10 rows)
 
207
 
 
208
SELECT * FROM ts_stat('SELECT a FROM test_tsvector', 'AB') ORDER BY ndoc DESC, nentry DESC, word;
 
209
 word | ndoc | nentry 
 
210
------+------+--------
 
211
 DFG  |    1 |      2
 
212
(1 row)
 
213
 
 
214
--dictionaries and to_tsvector
 
215
SELECT ts_lexize('english_stem', 'skies');
 
216
 ts_lexize 
 
217
-----------
 
218
 {sky}
 
219
(1 row)
 
220
 
 
221
SELECT ts_lexize('english_stem', 'identity');
 
222
 ts_lexize 
 
223
-----------
 
224
 {ident}
 
225
(1 row)
 
226
 
 
227
SELECT * FROM ts_token_type('default');
 
228
 tokid |      alias      |               description                
 
229
-------+-----------------+------------------------------------------
 
230
     1 | asciiword       | Word, all ASCII
 
231
     2 | word            | Word, all letters
 
232
     3 | numword         | Word, letters and digits
 
233
     4 | email           | Email address
 
234
     5 | url             | URL
 
235
     6 | host            | Host
 
236
     7 | sfloat          | Scientific notation
 
237
     8 | version         | Version number
 
238
     9 | hword_numpart   | Hyphenated word part, letters and digits
 
239
    10 | hword_part      | Hyphenated word part, all letters
 
240
    11 | hword_asciipart | Hyphenated word part, all ASCII
 
241
    12 | blank           | Space symbols
 
242
    13 | tag             | XML tag
 
243
    14 | protocol        | Protocol head
 
244
    15 | numhword        | Hyphenated word, letters and digits
 
245
    16 | asciihword      | Hyphenated word, all ASCII
 
246
    17 | hword           | Hyphenated word, all letters
 
247
    18 | url_path        | URL path
 
248
    19 | file            | File or path name
 
249
    20 | float           | Decimal notation
 
250
    21 | int             | Signed integer
 
251
    22 | uint            | Unsigned integer
 
252
    23 | entity          | XML entity
 
253
(23 rows)
 
254
 
 
255
SELECT * FROM ts_parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 
256
/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
 
257
<i <b> wow  < jqw <> qwerty');
 
258
 tokid |                token                 
 
259
-------+--------------------------------------
 
260
    22 | 345
 
261
    12 |  
 
262
     1 | qwe
 
263
    12 | @
 
264
    19 | efd.r
 
265
    12 |  ' 
 
266
    14 | http://
 
267
     6 | www.com
 
268
    12 | / 
 
269
    14 | http://
 
270
     5 | aew.werc.ewr/?ad=qwe&dw
 
271
     6 | aew.werc.ewr
 
272
    18 | /?ad=qwe&dw
 
273
    12 |  
 
274
     5 | 1aew.werc.ewr/?ad=qwe&dw
 
275
     6 | 1aew.werc.ewr
 
276
    18 | /?ad=qwe&dw
 
277
    12 |  
 
278
     6 | 2aew.werc.ewr
 
279
    12 |  
 
280
    14 | http://
 
281
     5 | 3aew.werc.ewr/?ad=qwe&dw
 
282
     6 | 3aew.werc.ewr
 
283
    18 | /?ad=qwe&dw
 
284
    12 |  
 
285
    14 | http://
 
286
     6 | 4aew.werc.ewr
 
287
    12 |  
 
288
    14 | http://
 
289
     5 | 5aew.werc.ewr:8100/?
 
290
     6 | 5aew.werc.ewr:8100
 
291
    18 | /?
 
292
    12 |   
 
293
     1 | ad
 
294
    12 | =
 
295
     1 | qwe
 
296
    12 | &
 
297
     1 | dw
 
298
    12 |  
 
299
     5 | 6aew.werc.ewr:8100/?ad=qwe&dw
 
300
     6 | 6aew.werc.ewr:8100
 
301
    18 | /?ad=qwe&dw
 
302
    12 |  
 
303
     5 | 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32
 
304
     6 | 7aew.werc.ewr:8100
 
305
    18 | /?ad=qwe&dw=%20%32
 
306
    12 |  
 
307
     7 | +4.0e-10
 
308
    12 |  
 
309
     1 | qwe
 
310
    12 |  
 
311
     1 | qwe
 
312
    12 |  
 
313
     1 | qwqwe
 
314
    12 |  
 
315
    20 | 234.435
 
316
    12 |  
 
317
    22 | 455
 
318
    12 |  
 
319
    20 | 5.005
 
320
    12 |  
 
321
     4 | teodor@stack.net
 
322
    12 |  
 
323
    16 | qwe-wer
 
324
    11 | qwe
 
325
    12 | -
 
326
    11 | wer
 
327
    12 |  
 
328
     1 | asdf
 
329
    12 |  
 
330
    13 | <fr>
 
331
     1 | qwer
 
332
    12 |  
 
333
     1 | jf
 
334
    12 |  
 
335
     1 | sdjk
 
336
    12 | <
 
337
     1 | we
 
338
    12 |  
 
339
     1 | hjwer
 
340
    12 |  
 
341
    13 | <werrwe>
 
342
    12 |  
 
343
     3 | ewr1
 
344
    12 | > 
 
345
     3 | ewri2
 
346
    12 |  
 
347
    13 | <a href="qwe<qwe>">
 
348
    12 |                                     +
 
349
       | 
 
350
    19 | /usr/local/fff
 
351
    12 |  
 
352
    19 | /awdf/dwqe/4325
 
353
    12 |  
 
354
    19 | rewt/ewr
 
355
    12 |  
 
356
     1 | wefjn
 
357
    12 |  
 
358
    19 | /wqe-324/ewr
 
359
    12 |  
 
360
    19 | gist.h
 
361
    12 |  
 
362
    19 | gist.h.c
 
363
    12 |  
 
364
    19 | gist.c
 
365
    12 | . 
 
366
     1 | readline
 
367
    12 |  
 
368
    20 | 4.2
 
369
    12 |  
 
370
    20 | 4.2
 
371
    12 | . 
 
372
    20 | 4.2
 
373
    12 | , 
 
374
     1 | readline
 
375
    20 | -4.2
 
376
    12 |  
 
377
     1 | readline
 
378
    20 | -4.2
 
379
    12 | . 
 
380
    22 | 234
 
381
    12 |                                     +
 
382
       | 
 
383
    12 | <
 
384
     1 | i
 
385
    12 |  
 
386
    13 | <b>
 
387
    12 |  
 
388
     1 | wow
 
389
    12 |   
 
390
    12 | < 
 
391
     1 | jqw
 
392
    12 |  
 
393
    12 | <> 
 
394
     1 | qwerty
 
395
(133 rows)
 
396
 
 
397
SELECT to_tsvector('english', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 
398
/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
 
399
<i <b> wow  < jqw <> qwerty');
 
400
                                                                                                                                                                                                                                                                                                                                                                                                                                       to_tsvector                                                                                                                                                                                                                                                                                                                                                                                                                                        
 
401
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
402
 '+4.0e-10':28 '-4.2':60,62 '/?':18 '/?ad=qwe&dw':7,10,14,24 '/?ad=qwe&dw=%20%32':27 '/awdf/dwqe/4325':48 '/usr/local/fff':47 '/wqe-324/ewr':51 '1aew.werc.ewr':9 '1aew.werc.ewr/?ad=qwe&dw':8 '234':63 '234.435':32 '2aew.werc.ewr':11 '345':1 '3aew.werc.ewr':13 '3aew.werc.ewr/?ad=qwe&dw':12 '4.2':56,57,58 '455':33 '4aew.werc.ewr':15 '5.005':34 '5aew.werc.ewr:8100':17 '5aew.werc.ewr:8100/?':16 '6aew.werc.ewr:8100':23 '6aew.werc.ewr:8100/?ad=qwe&dw':22 '7aew.werc.ewr:8100':26 '7aew.werc.ewr:8100/?ad=qwe&dw=%20%32':25 'ad':19 'aew.werc.ewr':6 'aew.werc.ewr/?ad=qwe&dw':5 'asdf':39 'dw':21 'efd.r':3 'ewr1':45 'ewri2':46 'gist.c':54 'gist.h':52 'gist.h.c':53 'hjwer':44 'jf':41 'jqw':66 'qwe':2,20,29,30,37 'qwe-wer':36 'qwer':40 'qwerti':67 'qwqwe':31 'readlin':55,59,61 'rewt/ewr':49 'sdjk':42 'teodor@stack.net':35 'wefjn':50 'wer':38 'wow':65 'www.com':4
 
403
(1 row)
 
404
 
 
405
SELECT length(to_tsvector('english', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/?  ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net qwe-wer asdf <fr>qwer jf sdjk<we hjwer <werrwe> ewr1> ewri2 <a href="qwe<qwe>">
 
406
/usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234
 
407
<i <b> wow  < jqw <> qwerty'));
 
408
 length 
 
409
--------
 
410
     53
 
411
(1 row)
 
412
 
 
413
-- ts_debug
 
414
SELECT * from ts_debug('english', '<myns:foo-bar_baz.blurfl>abc&nm1;def&#xa9;ghi&#245;jkl</myns:foo-bar_baz.blurfl>');
 
415
   alias   |   description   |           token            |  dictionaries  |  dictionary  | lexemes 
 
416
-----------+-----------------+----------------------------+----------------+--------------+---------
 
417
 tag       | XML tag         | <myns:foo-bar_baz.blurfl>  | {}             |              | 
 
418
 asciiword | Word, all ASCII | abc                        | {english_stem} | english_stem | {abc}
 
419
 entity    | XML entity      | &nm1;                      | {}             |              | 
 
420
 asciiword | Word, all ASCII | def                        | {english_stem} | english_stem | {def}
 
421
 entity    | XML entity      | &#xa9;                     | {}             |              | 
 
422
 asciiword | Word, all ASCII | ghi                        | {english_stem} | english_stem | {ghi}
 
423
 entity    | XML entity      | &#245;                     | {}             |              | 
 
424
 asciiword | Word, all ASCII | jkl                        | {english_stem} | english_stem | {jkl}
 
425
 tag       | XML tag         | </myns:foo-bar_baz.blurfl> | {}             |              | 
 
426
(9 rows)
 
427
 
 
428
-- check parsing of URLs
 
429
SELECT * from ts_debug('english', 'http://www.harewoodsolutions.co.uk/press.aspx</span>');
 
430
  alias   |  description  |                 token                  | dictionaries | dictionary |                 lexemes                  
 
431
----------+---------------+----------------------------------------+--------------+------------+------------------------------------------
 
432
 protocol | Protocol head | http://                                | {}           |            | 
 
433
 url      | URL           | www.harewoodsolutions.co.uk/press.aspx | {simple}     | simple     | {www.harewoodsolutions.co.uk/press.aspx}
 
434
 host     | Host          | www.harewoodsolutions.co.uk            | {simple}     | simple     | {www.harewoodsolutions.co.uk}
 
435
 url_path | URL path      | /press.aspx                            | {simple}     | simple     | {/press.aspx}
 
436
 tag      | XML tag       | </span>                                | {}           |            | 
 
437
(5 rows)
 
438
 
 
439
SELECT * from ts_debug('english', 'http://aew.wer0c.ewr/id?ad=qwe&dw<span>');
 
440
  alias   |  description  |           token            | dictionaries | dictionary |           lexemes            
 
441
----------+---------------+----------------------------+--------------+------------+------------------------------
 
442
 protocol | Protocol head | http://                    | {}           |            | 
 
443
 url      | URL           | aew.wer0c.ewr/id?ad=qwe&dw | {simple}     | simple     | {aew.wer0c.ewr/id?ad=qwe&dw}
 
444
 host     | Host          | aew.wer0c.ewr              | {simple}     | simple     | {aew.wer0c.ewr}
 
445
 url_path | URL path      | /id?ad=qwe&dw              | {simple}     | simple     | {/id?ad=qwe&dw}
 
446
 tag      | XML tag       | <span>                     | {}           |            | 
 
447
(5 rows)
 
448
 
 
449
SELECT * from ts_debug('english', 'http://5aew.werc.ewr:8100/?');
 
450
  alias   |  description  |        token         | dictionaries | dictionary |        lexemes         
 
451
----------+---------------+----------------------+--------------+------------+------------------------
 
452
 protocol | Protocol head | http://              | {}           |            | 
 
453
 url      | URL           | 5aew.werc.ewr:8100/? | {simple}     | simple     | {5aew.werc.ewr:8100/?}
 
454
 host     | Host          | 5aew.werc.ewr:8100   | {simple}     | simple     | {5aew.werc.ewr:8100}
 
455
 url_path | URL path      | /?                   | {simple}     | simple     | {/?}
 
456
(4 rows)
 
457
 
 
458
SELECT * from ts_debug('english', '5aew.werc.ewr:8100/?xx');
 
459
  alias   | description |         token          | dictionaries | dictionary |         lexemes          
 
460
----------+-------------+------------------------+--------------+------------+--------------------------
 
461
 url      | URL         | 5aew.werc.ewr:8100/?xx | {simple}     | simple     | {5aew.werc.ewr:8100/?xx}
 
462
 host     | Host        | 5aew.werc.ewr:8100     | {simple}     | simple     | {5aew.werc.ewr:8100}
 
463
 url_path | URL path    | /?xx                   | {simple}     | simple     | {/?xx}
 
464
(3 rows)
 
465
 
 
466
-- to_tsquery
 
467
SELECT to_tsquery('english', 'qwe & sKies ');
 
468
  to_tsquery   
 
469
---------------
 
470
 'qwe' & 'sky'
 
471
(1 row)
 
472
 
 
473
SELECT to_tsquery('simple', 'qwe & sKies ');
 
474
   to_tsquery    
 
475
-----------------
 
476
 'qwe' & 'skies'
 
477
(1 row)
 
478
 
 
479
SELECT to_tsquery('english', '''the wether'':dc & ''           sKies '':BC ');
 
480
       to_tsquery       
 
481
------------------------
 
482
 'wether':CD & 'sky':BC
 
483
(1 row)
 
484
 
 
485
SELECT to_tsquery('english', 'asd&(and|fghj)');
 
486
   to_tsquery   
 
487
----------------
 
488
 'asd' & 'fghj'
 
489
(1 row)
 
490
 
 
491
SELECT to_tsquery('english', '(asd&and)|fghj');
 
492
   to_tsquery   
 
493
----------------
 
494
 'asd' | 'fghj'
 
495
(1 row)
 
496
 
 
497
SELECT to_tsquery('english', '(asd&!and)|fghj');
 
498
   to_tsquery   
 
499
----------------
 
500
 'asd' | 'fghj'
 
501
(1 row)
 
502
 
 
503
SELECT to_tsquery('english', '(the|and&(i&1))&fghj');
 
504
  to_tsquery  
 
505
--------------
 
506
 '1' & 'fghj'
 
507
(1 row)
 
508
 
 
509
SELECT plainto_tsquery('english', 'the and z 1))& fghj');
 
510
  plainto_tsquery   
 
511
--------------------
 
512
 'z' & '1' & 'fghj'
 
513
(1 row)
 
514
 
 
515
SELECT plainto_tsquery('english', 'foo bar') && plainto_tsquery('english', 'asd');
 
516
       ?column?        
 
517
-----------------------
 
518
 'foo' & 'bar' & 'asd'
 
519
(1 row)
 
520
 
 
521
SELECT plainto_tsquery('english', 'foo bar') || plainto_tsquery('english', 'asd fg');
 
522
           ?column?           
 
523
------------------------------
 
524
 'foo' & 'bar' | 'asd' & 'fg'
 
525
(1 row)
 
526
 
 
527
SELECT plainto_tsquery('english', 'foo bar') || !!plainto_tsquery('english', 'asd fg');
 
528
             ?column?              
 
529
-----------------------------------
 
530
 'foo' & 'bar' | !( 'asd' & 'fg' )
 
531
(1 row)
 
532
 
 
533
SELECT plainto_tsquery('english', 'foo bar') && 'asd | fg';
 
534
             ?column?             
 
535
----------------------------------
 
536
 'foo' & 'bar' & ( 'asd' | 'fg' )
 
537
(1 row)
 
538
 
 
539
SELECT ts_rank_cd(to_tsvector('english', '
 
540
Day after day, day after day,
 
541
  We stuck, nor breath nor motion,
 
542
As idle as a painted Ship
 
543
  Upon a painted Ocean.
 
544
Water, water, every where
 
545
  And all the boards did shrink;
 
546
Water, water, every where,
 
547
  Nor any drop to drink.
 
548
S. T. Coleridge (1772-1834)
 
549
'), to_tsquery('english', 'paint&water'));
 
550
 ts_rank_cd 
 
551
------------
 
552
       0.05
 
553
(1 row)
 
554
 
 
555
SELECT ts_rank_cd(to_tsvector('english', '
 
556
Day after day, day after day,
 
557
  We stuck, nor breath nor motion,
 
558
As idle as a painted Ship
 
559
  Upon a painted Ocean.
 
560
Water, water, every where
 
561
  And all the boards did shrink;
 
562
Water, water, every where,
 
563
  Nor any drop to drink.
 
564
S. T. Coleridge (1772-1834)
 
565
'), to_tsquery('english', 'breath&motion&water'));
 
566
 ts_rank_cd 
 
567
------------
 
568
 0.00833333
 
569
(1 row)
 
570
 
 
571
SELECT ts_rank_cd(to_tsvector('english', '
 
572
Day after day, day after day,
 
573
  We stuck, nor breath nor motion,
 
574
As idle as a painted Ship
 
575
  Upon a painted Ocean.
 
576
Water, water, every where
 
577
  And all the boards did shrink;
 
578
Water, water, every where,
 
579
  Nor any drop to drink.
 
580
S. T. Coleridge (1772-1834)
 
581
'), to_tsquery('english', 'ocean'));
 
582
 ts_rank_cd 
 
583
------------
 
584
        0.1
 
585
(1 row)
 
586
 
 
587
--headline tests
 
588
SELECT ts_headline('english', '
 
589
Day after day, day after day,
 
590
  We stuck, nor breath nor motion,
 
591
As idle as a painted Ship
 
592
  Upon a painted Ocean.
 
593
Water, water, every where
 
594
  And all the boards did shrink;
 
595
Water, water, every where,
 
596
  Nor any drop to drink.
 
597
S. T. Coleridge (1772-1834)
 
598
', to_tsquery('english', 'paint&water'));
 
599
               ts_headline               
 
600
-----------------------------------------
 
601
 <b>painted</b> Ocean.                  +
 
602
 <b>Water</b>, <b>water</b>, every where+
 
603
   And all the boards did shrink;       +
 
604
 <b>Water</b>, <b>water</b>, every
 
605
(1 row)
 
606
 
 
607
SELECT ts_headline('english', '
 
608
Day after day, day after day,
 
609
  We stuck, nor breath nor motion,
 
610
As idle as a painted Ship
 
611
  Upon a painted Ocean.
 
612
Water, water, every where
 
613
  And all the boards did shrink;
 
614
Water, water, every where,
 
615
  Nor any drop to drink.
 
616
S. T. Coleridge (1772-1834)
 
617
', to_tsquery('english', 'breath&motion&water'));
 
618
           ts_headline            
 
619
----------------------------------
 
620
 <b>breath</b> nor <b>motion</b>,+
 
621
 As idle as a painted Ship       +
 
622
   Upon a painted Ocean.         +
 
623
 <b>Water</b>, <b>water</b>
 
624
(1 row)
 
625
 
 
626
SELECT ts_headline('english', '
 
627
Day after day, day after day,
 
628
  We stuck, nor breath nor motion,
 
629
As idle as a painted Ship
 
630
  Upon a painted Ocean.
 
631
Water, water, every where
 
632
  And all the boards did shrink;
 
633
Water, water, every where,
 
634
  Nor any drop to drink.
 
635
S. T. Coleridge (1772-1834)
 
636
', to_tsquery('english', 'ocean'));
 
637
           ts_headline            
 
638
----------------------------------
 
639
 <b>Ocean</b>.                   +
 
640
 Water, water, every where       +
 
641
   And all the boards did shrink;+
 
642
 Water, water, every where
 
643
(1 row)
 
644
 
 
645
SELECT ts_headline('english', '
 
646
<html>
 
647
<!-- some comment -->
 
648
<body>
 
649
Sea view wow <u>foo bar</u> <i>qq</i>
 
650
<a href="http://www.google.com/foo.bar.html" target="_blank">YES &nbsp;</a>
 
651
ff-bg
 
652
<script>
 
653
       document.write(15);
 
654
</script>
 
655
</body>
 
656
</html>',
 
657
to_tsquery('english', 'sea&foo'), 'HighlightAll=true');
 
658
                                 ts_headline                                 
 
659
-----------------------------------------------------------------------------
 
660
                                                                            +
 
661
 <html>                                                                     +
 
662
 <!-- some comment -->                                                      +
 
663
 <body>                                                                     +
 
664
 <b>Sea</b> view wow <u><b>foo</b> bar</u> <i>qq</i>                        +
 
665
 <a href="http://www.google.com/foo.bar.html" target="_blank">YES &nbsp;</a>+
 
666
 ff-bg                                                                      +
 
667
 <script>                                                                   +
 
668
        document.write(15);                                                 +
 
669
 </script>                                                                  +
 
670
 </body>                                                                    +
 
671
 </html>
 
672
(1 row)
 
673
 
 
674
--Check if headline fragments work
 
675
SELECT ts_headline('english', '
 
676
Day after day, day after day,
 
677
  We stuck, nor breath nor motion,
 
678
As idle as a painted Ship
 
679
  Upon a painted Ocean.
 
680
Water, water, every where
 
681
  And all the boards did shrink;
 
682
Water, water, every where,
 
683
  Nor any drop to drink.
 
684
S. T. Coleridge (1772-1834)
 
685
', to_tsquery('english', 'ocean'), 'MaxFragments=1');
 
686
            ts_headline             
 
687
------------------------------------
 
688
 after day,                        +
 
689
   We stuck, nor breath nor motion,+
 
690
 As idle as a painted Ship         +
 
691
   Upon a painted <b>Ocean</b>.    +
 
692
 Water, water, every where         +
 
693
   And all the boards did shrink;  +
 
694
 Water, water, every where,        +
 
695
   Nor any drop
 
696
(1 row)
 
697
 
 
698
--Check if more than one fragments are displayed
 
699
SELECT ts_headline('english', '
 
700
Day after day, day after day,
 
701
  We stuck, nor breath nor motion,
 
702
As idle as a painted Ship
 
703
  Upon a painted Ocean.
 
704
Water, water, every where
 
705
  And all the boards did shrink;
 
706
Water, water, every where,
 
707
  Nor any drop to drink.
 
708
S. T. Coleridge (1772-1834)
 
709
', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2');
 
710
                 ts_headline                  
 
711
----------------------------------------------
 
712
 after day, day after day,                   +
 
713
   We <b>stuck</b>, nor breath nor motion,   +
 
714
 As idle as a painted Ship                   +
 
715
   Upon a painted Ocean.                     +
 
716
 Water, water, every where                   +
 
717
   And all the boards did shrink;            +
 
718
 Water, water, every where ... drop to drink.+
 
719
 S. T. <b>Coleridge</b>
 
720
(1 row)
 
721
 
 
722
--Fragments when there all query words are not in the document
 
723
SELECT ts_headline('english', '
 
724
Day after day, day after day,
 
725
  We stuck, nor breath nor motion,
 
726
As idle as a painted Ship
 
727
  Upon a painted Ocean.
 
728
Water, water, every where
 
729
  And all the boards did shrink;
 
730
Water, water, every where,
 
731
  Nor any drop to drink.
 
732
S. T. Coleridge (1772-1834)
 
733
', to_tsquery('english', 'ocean & seahorse'), 'MaxFragments=1');
 
734
            ts_headline             
 
735
------------------------------------
 
736
                                   +
 
737
 Day after day, day after day,     +
 
738
   We stuck, nor breath nor motion,+
 
739
 As idle as
 
740
(1 row)
 
741
 
 
742
--FragmentDelimiter option
 
743
SELECT ts_headline('english', '
 
744
Day after day, day after day,
 
745
  We stuck, nor breath nor motion,
 
746
As idle as a painted Ship
 
747
  Upon a painted Ocean.
 
748
Water, water, every where
 
749
  And all the boards did shrink;
 
750
Water, water, every where,
 
751
  Nor any drop to drink.
 
752
S. T. Coleridge (1772-1834)
 
753
', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2,FragmentDelimiter=***');
 
754
                ts_headline                 
 
755
--------------------------------------------
 
756
 after day, day after day,                 +
 
757
   We <b>stuck</b>, nor breath nor motion, +
 
758
 As idle as a painted Ship                 +
 
759
   Upon a painted Ocean.                   +
 
760
 Water, water, every where                 +
 
761
   And all the boards did shrink;          +
 
762
 Water, water, every where***drop to drink.+
 
763
 S. T. <b>Coleridge</b>
 
764
(1 row)
 
765
 
 
766
--Rewrite sub system
 
767
CREATE TABLE test_tsquery (txtkeyword TEXT, txtsample TEXT);
 
768
\set ECHO none
 
769
ALTER TABLE test_tsquery ADD COLUMN keyword tsquery;
 
770
UPDATE test_tsquery SET keyword = to_tsquery('english', txtkeyword);
 
771
ALTER TABLE test_tsquery ADD COLUMN sample tsquery;
 
772
UPDATE test_tsquery SET sample = to_tsquery('english', txtsample::text);
 
773
SELECT COUNT(*) FROM test_tsquery WHERE keyword <  'new & york';
 
774
 count 
 
775
-------
 
776
     1
 
777
(1 row)
 
778
 
 
779
SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york';
 
780
 count 
 
781
-------
 
782
     2
 
783
(1 row)
 
784
 
 
785
SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york';
 
786
 count 
 
787
-------
 
788
     1
 
789
(1 row)
 
790
 
 
791
SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york';
 
792
 count 
 
793
-------
 
794
     3
 
795
(1 row)
 
796
 
 
797
SELECT COUNT(*) FROM test_tsquery WHERE keyword >  'new & york';
 
798
 count 
 
799
-------
 
800
     2
 
801
(1 row)
 
802
 
 
803
CREATE UNIQUE INDEX bt_tsq ON test_tsquery (keyword);
 
804
SET enable_seqscan=OFF;
 
805
SELECT COUNT(*) FROM test_tsquery WHERE keyword <  'new & york';
 
806
 count 
 
807
-------
 
808
     1
 
809
(1 row)
 
810
 
 
811
SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york';
 
812
 count 
 
813
-------
 
814
     2
 
815
(1 row)
 
816
 
 
817
SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york';
 
818
 count 
 
819
-------
 
820
     1
 
821
(1 row)
 
822
 
 
823
SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york';
 
824
 count 
 
825
-------
 
826
     3
 
827
(1 row)
 
828
 
 
829
SELECT COUNT(*) FROM test_tsquery WHERE keyword >  'new & york';
 
830
 count 
 
831
-------
 
832
     2
 
833
(1 row)
 
834
 
 
835
RESET enable_seqscan;
 
836
SELECT ts_rewrite('foo & bar & qq & new & york',  'new & york'::tsquery, 'big & apple | nyc | new & york & city');
 
837
                                    ts_rewrite                                    
 
838
----------------------------------------------------------------------------------
 
839
 'foo' & 'bar' & 'qq' & ( 'city' & 'new' & 'york' | ( 'nyc' | 'big' & 'apple' ) )
 
840
(1 row)
 
841
 
 
842
SELECT ts_rewrite('moscow', 'SELECT keyword, sample FROM test_tsquery'::text );
 
843
     ts_rewrite      
 
844
---------------------
 
845
 'moskva' | 'moscow'
 
846
(1 row)
 
847
 
 
848
SELECT ts_rewrite('moscow & hotel', 'SELECT keyword, sample FROM test_tsquery'::text );
 
849
            ts_rewrite             
 
850
-----------------------------------
 
851
 'hotel' & ( 'moskva' | 'moscow' )
 
852
(1 row)
 
853
 
 
854
SELECT ts_rewrite('bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery'::text );
 
855
                                     ts_rewrite                                      
 
856
-------------------------------------------------------------------------------------
 
857
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
858
(1 row)
 
859
 
 
860
SELECT ts_rewrite( 'moscow', 'SELECT keyword, sample FROM test_tsquery');
 
861
     ts_rewrite      
 
862
---------------------
 
863
 'moskva' | 'moscow'
 
864
(1 row)
 
865
 
 
866
SELECT ts_rewrite( 'moscow & hotel', 'SELECT keyword, sample FROM test_tsquery');
 
867
            ts_rewrite             
 
868
-----------------------------------
 
869
 'hotel' & ( 'moskva' | 'moscow' )
 
870
(1 row)
 
871
 
 
872
SELECT ts_rewrite( 'bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery');
 
873
                                     ts_rewrite                                      
 
874
-------------------------------------------------------------------------------------
 
875
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
876
(1 row)
 
877
 
 
878
SELECT keyword FROM test_tsquery WHERE keyword @> 'new';
 
879
    keyword     
 
880
----------------
 
881
 'new' & 'york'
 
882
(1 row)
 
883
 
 
884
SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow';
 
885
 keyword  
 
886
----------
 
887
 'moscow'
 
888
(1 row)
 
889
 
 
890
SELECT keyword FROM test_tsquery WHERE keyword <@ 'new';
 
891
 keyword 
 
892
---------
 
893
(0 rows)
 
894
 
 
895
SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow';
 
896
 keyword  
 
897
----------
 
898
 'moscow'
 
899
(1 row)
 
900
 
 
901
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
 
902
     ts_rewrite      
 
903
---------------------
 
904
 'moskva' | 'moscow'
 
905
(1 row)
 
906
 
 
907
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
 
908
            ts_rewrite             
 
909
-----------------------------------
 
910
 'hotel' & ( 'moskva' | 'moscow' )
 
911
(1 row)
 
912
 
 
913
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar &  new & qq & foo & york') AS query;
 
914
                                     ts_rewrite                                      
 
915
-------------------------------------------------------------------------------------
 
916
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
917
(1 row)
 
918
 
 
919
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
 
920
     ts_rewrite      
 
921
---------------------
 
922
 'moskva' | 'moscow'
 
923
(1 row)
 
924
 
 
925
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
 
926
            ts_rewrite             
 
927
-----------------------------------
 
928
 'hotel' & ( 'moskva' | 'moscow' )
 
929
(1 row)
 
930
 
 
931
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query;
 
932
                                     ts_rewrite                                      
 
933
-------------------------------------------------------------------------------------
 
934
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
935
(1 row)
 
936
 
 
937
CREATE INDEX qq ON test_tsquery USING gist (keyword tsquery_ops);
 
938
SET enable_seqscan=OFF;
 
939
SELECT keyword FROM test_tsquery WHERE keyword @> 'new';
 
940
    keyword     
 
941
----------------
 
942
 'new' & 'york'
 
943
(1 row)
 
944
 
 
945
SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow';
 
946
 keyword  
 
947
----------
 
948
 'moscow'
 
949
(1 row)
 
950
 
 
951
SELECT keyword FROM test_tsquery WHERE keyword <@ 'new';
 
952
 keyword 
 
953
---------
 
954
(0 rows)
 
955
 
 
956
SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow';
 
957
 keyword  
 
958
----------
 
959
 'moscow'
 
960
(1 row)
 
961
 
 
962
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
 
963
     ts_rewrite      
 
964
---------------------
 
965
 'moskva' | 'moscow'
 
966
(1 row)
 
967
 
 
968
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
 
969
            ts_rewrite             
 
970
-----------------------------------
 
971
 'hotel' & ( 'moskva' | 'moscow' )
 
972
(1 row)
 
973
 
 
974
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query;
 
975
                                     ts_rewrite                                      
 
976
-------------------------------------------------------------------------------------
 
977
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
978
(1 row)
 
979
 
 
980
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query;
 
981
     ts_rewrite      
 
982
---------------------
 
983
 'moskva' | 'moscow'
 
984
(1 row)
 
985
 
 
986
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query;
 
987
            ts_rewrite             
 
988
-----------------------------------
 
989
 'hotel' & ( 'moskva' | 'moscow' )
 
990
(1 row)
 
991
 
 
992
SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar &  new & qq & foo & york') AS query;
 
993
                                     ts_rewrite                                      
 
994
-------------------------------------------------------------------------------------
 
995
 'citi' & 'foo' & ( 'bar' | 'qq' ) & ( 'nyc' | ( 'big' & 'appl' | 'new' & 'york' ) )
 
996
(1 row)
 
997
 
 
998
RESET enable_seqscan;
 
999
--test GUC
 
1000
SET default_text_search_config=simple;
 
1001
SELECT to_tsvector('SKIES My booKs');
 
1002
        to_tsvector         
 
1003
----------------------------
 
1004
 'books':3 'my':2 'skies':1
 
1005
(1 row)
 
1006
 
 
1007
SELECT plainto_tsquery('SKIES My booKs');
 
1008
     plainto_tsquery      
 
1009
--------------------------
 
1010
 'skies' & 'my' & 'books'
 
1011
(1 row)
 
1012
 
 
1013
SELECT to_tsquery('SKIES & My | booKs');
 
1014
        to_tsquery        
 
1015
--------------------------
 
1016
 'skies' & 'my' | 'books'
 
1017
(1 row)
 
1018
 
 
1019
SET default_text_search_config=english;
 
1020
SELECT to_tsvector('SKIES My booKs');
 
1021
   to_tsvector    
 
1022
------------------
 
1023
 'book':3 'sky':1
 
1024
(1 row)
 
1025
 
 
1026
SELECT plainto_tsquery('SKIES My booKs');
 
1027
 plainto_tsquery 
 
1028
-----------------
 
1029
 'sky' & 'book'
 
1030
(1 row)
 
1031
 
 
1032
SELECT to_tsquery('SKIES & My | booKs');
 
1033
   to_tsquery   
 
1034
----------------
 
1035
 'sky' | 'book'
 
1036
(1 row)
 
1037
 
 
1038
--trigger
 
1039
CREATE TRIGGER tsvectorupdate
 
1040
BEFORE UPDATE OR INSERT ON test_tsvector
 
1041
FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(a, 'pg_catalog.english', t);
 
1042
SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
 
1043
 count 
 
1044
-------
 
1045
     0
 
1046
(1 row)
 
1047
 
 
1048
INSERT INTO test_tsvector (t) VALUES ('345 qwerty');
 
1049
SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
 
1050
 count 
 
1051
-------
 
1052
     1
 
1053
(1 row)
 
1054
 
 
1055
UPDATE test_tsvector SET t = null WHERE t = '345 qwerty';
 
1056
SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
 
1057
 count 
 
1058
-------
 
1059
     0
 
1060
(1 row)
 
1061
 
 
1062
INSERT INTO test_tsvector (t) VALUES ('345 qwerty');
 
1063
SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty');
 
1064
 count 
 
1065
-------
 
1066
     1
 
1067
(1 row)
 
1068
 
 
1069
-- test finding items in GIN's pending list
 
1070
create temp table pendtest (ts tsvector);
 
1071
create index pendtest_idx on pendtest using gin(ts);
 
1072
insert into pendtest values (to_tsvector('Lore ipsam'));
 
1073
insert into pendtest values (to_tsvector('Lore ipsum'));
 
1074
select * from pendtest where 'ipsu:*'::tsquery @@ ts;
 
1075
         ts         
 
1076
--------------------
 
1077
 'ipsum':2 'lore':1
 
1078
(1 row)
 
1079
 
 
1080
select * from pendtest where 'ipsa:*'::tsquery @@ ts;
 
1081
         ts         
 
1082
--------------------
 
1083
 'ipsam':2 'lore':1
 
1084
(1 row)
 
1085
 
 
1086
select * from pendtest where 'ips:*'::tsquery @@ ts;
 
1087
         ts         
 
1088
--------------------
 
1089
 'ipsam':2 'lore':1
 
1090
 'ipsum':2 'lore':1
 
1091
(2 rows)
 
1092
 
 
1093
select * from pendtest where 'ipt:*'::tsquery @@ ts;
 
1094
 ts 
 
1095
----
 
1096
(0 rows)
 
1097
 
 
1098
select * from pendtest where 'ipi:*'::tsquery @@ ts;
 
1099
 ts 
 
1100
----
 
1101
(0 rows)
 
1102