mirror of
https://github.com/postgres/postgres.git
synced 2025-05-05 09:19:17 +03:00
91 lines
2.3 KiB
Plaintext
91 lines
2.3 KiB
Plaintext
<!-- doc/src/sgml/test-parser.sgml -->
|
|
|
|
<sect1 id="test-parser">
|
|
<title>test_parser</title>
|
|
|
|
<indexterm zone="test-parser">
|
|
<primary>test_parser</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
<filename>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.
|
|
</para>
|
|
|
|
<para>
|
|
<filename>test_parser</> recognizes words separated by white space,
|
|
and returns just two token types:
|
|
|
|
<programlisting>
|
|
mydb=# SELECT * FROM ts_token_type('testparser');
|
|
tokid | alias | description
|
|
-------+-------+---------------
|
|
3 | word | Word
|
|
12 | blank | Space symbols
|
|
(2 rows)
|
|
</programlisting>
|
|
|
|
These token numbers have been chosen to be compatible with the default
|
|
parser's numbering. This allows us to use its <function>headline()</>
|
|
function, thus keeping the example simple.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Usage</title>
|
|
|
|
<para>
|
|
Installing the <literal>test_parser</> extension creates a text search
|
|
parser <literal>testparser</>. It has no user-configurable parameters.
|
|
</para>
|
|
|
|
<para>
|
|
You can test the parser with, for example,
|
|
|
|
<programlisting>
|
|
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
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Real-world use requires setting up a text search configuration
|
|
that uses the parser. For example,
|
|
|
|
<programlisting>
|
|
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)
|
|
</programlisting>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|