jsonb_to_tsvector()

将 JSONB 文档转换为 tsvector 类型的函数

jsonb_to_tsvector() 是一个系统函数,用于将 jsonb 文档中的项目转换为 tsvector 词素。根据指定的或默认的文本搜索配置对单词进行规范化。

jsonb_to_tsvector()PostgreSQL 11 中添加。

用法

jsonb_to_tsvector ( [ config regconfig, ] document jsonb, filter jsonb ) → tsvector

filter 是一个 jsonb 值或数组,包含一个或多个(如果是数组)以下关键字

  • "string"(包含所有字符串值)
  • "numeric"(包含所有数值)
  • "boolean"(包含所有布尔值)
  • "key"(包含所有键)
  • "all"(包含以上所有)

"all" 将覆盖任何其他值。

变更历史

示例

jsonb_to_tsvector() 的基本用法示例

postgres=# SELECT jsonb_to_tsvector('{"a": "The Quick Brown Fox",
                                      "b": "Jumps Over The Lazy Dog"}'::jsonb,
                                      '["string"]');
                    jsonb_to_tsvector
--------------------------------------------------------
 'brown':3 'dog':10 'fox':4 'jump':6 'lazi':9 'quick':2
(1 row)

filter 中包含 JSONB 数组键

postgres=# SELECT jsonb_to_tsvector('{"vulpes": "The Quick Brown Fox",
                                      "canine": "Jumps Over The Lazy Dog"}'::jsonb,
                                      '["key", "string"]');
                              jsonb_to_tsvector
-----------------------------------------------------------------------------
 'brown':5 'canin':8 'dog':14 'fox':6 'jump':10 'lazi':13 'quick':4 'vulp':1
(1 row)

覆盖默认文本搜索配置

postgres=# SELECT jsonb_to_tsvector('simple',
                                      '{"a": "The Quick Brown Fox",
                                      "b": "Jumps Over The Lazy Dog"}'::jsonb,
                                      '["numeric","all"]');
                                      jsonb_to_tsvector
--------------------------------------------------------------------------------------------
 'a':1 'b':8 'brown':5 'dog':14 'fox':6 'jumps':10 'lazy':13 'over':11 'quick':4 'the':3,12
(1 row)

如果没有任何值匹配 filter,或者 filter 为空,则返回零长度的 tsvector

postgres=# SELECT length(jsonb_to_tsvector('{"a": "The Quick Brown Fox",
                                      "b": "Jumps Over The Lazy Dog"}'::jsonb,
                                      '"numeric"'));
 length
--------
      0
(1 row)

postgres=# SELECT length(jsonb_to_tsvector('{"a": "The Quick Brown Fox",
                                                 "b": "Jumps Over The Lazy Dog"}'::jsonb,
                                                 '[]'));
 length
--------
      0
(1 row)

如果提供了无效的 filter 值,则会引发错误。

postgres=# SELECT jsonb_to_tsvector('{"a": "The Quick Brown Fox",
                                                 "b": "Jumps Over The Lazy Dog"}'::jsonb,
                                                 '["varchar"]');
ERROR:  wrong flag in flag array: "varchar"
HINT:  Possible values are: "string", "numeric", "boolean", "key", and "all".

分类

全文搜索JSON系统函数

参见

json_to_tsvector()to_tsvector()

反馈

提交任何关于 "jsonb_to_tsvector()" 的评论、建议或更正 此处