mirror of
https://github.com/postgres/postgres.git
synced 2026-03-16 15:43:31 -04:00
62 lines
1.8 KiB
Text
62 lines
1.8 KiB
Text
|
|
test_parser is an example of a custom parser for full-text
|
||
|
|
search. It doesn't do anything especially useful, but can serve as
|
||
|
|
a starting point for developing your own parser.
|
||
|
|
|
||
|
|
test_parser recognizes words separated by white space,
|
||
|
|
and returns just two token types:
|
||
|
|
|
||
|
|
mydb=# SELECT * FROM ts_token_type('testparser');
|
||
|
|
tokid | alias | description
|
||
|
|
-------+-------+---------------
|
||
|
|
3 | word | Word
|
||
|
|
12 | blank | Space symbols
|
||
|
|
(2 rows)
|
||
|
|
|
||
|
|
These token numbers have been chosen to be compatible with the default
|
||
|
|
parser's numbering. This allows us to use its headline()
|
||
|
|
function, thus keeping the example simple.
|
||
|
|
|
||
|
|
Usage
|
||
|
|
=====
|
||
|
|
|
||
|
|
Installing the test_parser extension creates a text search
|
||
|
|
parser testparser. It has no user-configurable parameters.
|
||
|
|
|
||
|
|
You can test the parser with, for example,
|
||
|
|
|
||
|
|
mydb=# SELECT * FROM ts_parse('testparser', 'That''s my first own parser');
|
||
|
|
tokid | token
|
||
|
|
-------+--------
|
||
|
|
3 | That's
|
||
|
|
12 |
|
||
|
|
3 | my
|
||
|
|
12 |
|
||
|
|
3 | first
|
||
|
|
12 |
|
||
|
|
3 | own
|
||
|
|
12 |
|
||
|
|
3 | parser
|
||
|
|
|
||
|
|
Real-world use requires setting up a text search configuration
|
||
|
|
that uses the parser. For example,
|
||
|
|
|
||
|
|
mydb=# CREATE TEXT SEARCH CONFIGURATION testcfg ( PARSER = testparser );
|
||
|
|
CREATE TEXT SEARCH CONFIGURATION
|
||
|
|
|
||
|
|
mydb=# ALTER TEXT SEARCH CONFIGURATION testcfg
|
||
|
|
mydb-# ADD MAPPING FOR word WITH english_stem;
|
||
|
|
ALTER TEXT SEARCH CONFIGURATION
|
||
|
|
|
||
|
|
mydb=# SELECT to_tsvector('testcfg', 'That''s my first own parser');
|
||
|
|
to_tsvector
|
||
|
|
-------------------------------
|
||
|
|
'that':1 'first':3 'parser':5
|
||
|
|
(1 row)
|
||
|
|
|
||
|
|
mydb=# SELECT ts_headline('testcfg', 'Supernovae stars are the brightest phenomena in galaxies',
|
||
|
|
mydb(# to_tsquery('testcfg', 'star'));
|
||
|
|
ts_headline
|
||
|
|
-----------------------------------------------------------------
|
||
|
|
Supernovae <b>stars</b> are the brightest phenomena in galaxies
|
||
|
|
(1 row)
|