-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo.sql
77 lines (54 loc) · 1.5 KB
/
demo.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
-- This is the demo SQL
------------------------------------------------
SELECT *
FROM books
LIMIT 100;
SELECT *
FROM reviews
WHERE isbn not like 'zz%'
LIMIT 10;
------------------------------------------------
SELECT *
FROM books
WHERE document ILIKE '%zoo%';
SELECT *
FROM books
WHERE ts @@ to_tsquery('zoo:*');
------------------------------------------------
SELECT *
FROM books
WHERE document ILIKE '% and %';
SELECT *
FROM books
WHERE ts @@ to_tsquery('and:*');
------------------------------------------------
SELECT *
FROM books
WHERE ts @@ to_tsquery('123');
------------------------------------------------
DROP INDEX idx_reviews_full_text;
DROP INDEX idx_reviews_isbn;
--This is a regular index
CREATE INDEX idx_reviews_isbn ON reviews (isbn);
--This is a GIN index
CREATE INDEX idx_reviews_full_text ON reviews USING GIN(ts);
------------------------------------------------
SELECT TS_RANK_CD(ts, query) as rank
, bk.*
FROM books bk
, TO_TSQUERY('adams & hitch:*') query
WHERE query @@ ts
ORDER BY rank DESC;
------------------------------------------------
/* NOTE PERFORMANCE: If we use LIMIT and TS_RANK
* we may end up making expensive calls to
* TS_HEADLINE() for rows that are not returned.
* If this is the case then use a subquery first. */
SELECT TS_RANK_CD(ts, query) as rank
, TS_HEADLINE(document,query) as headline
, bk.*
FROM books bk
, TO_TSQUERY('adams & hitch:*') query
WHERE query @@ ts
ORDER BY rank DESC;
------------------------------------------------