PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.40. test_parser

`test_parser` 是一个自定义的全文搜索解析器的例子。它不做特别有用的工作，但是可以作为开发一个自己的解析器的起点。

`test_parser` 识别以空格分隔的单词，并且返回两种标记类型：

    mydb=# SELECT * FROM ts_token_type('testparser');
     tokid | alias |  description
    -------+-------+---------------
         3 | word  | Word
        12 | blank | Space symbols
    (2 rows)

这些标记数字被选择来兼容默认的解析器编号。这让我们可以使用`headline()`函数，从而保持例子的简单。

## F.40.1. 用法

安装`test_parser`扩展，创建一个文本搜索解析器`testparser`。它没有用户可配置参数。

你可以像下面的例子这样测试该解析器，

    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

实际使用需要配置一个文本搜索配置项来使用这个解析器。例如，

    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)

上一页 | 起始页 | 下一页
test_decoding | 上一级 | test_shm_mq