🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# F.38\. 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.38.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) ```