json_to_tsvector()

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

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

json_to_tsvector() 添加于 PostgreSQL 11

用法

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

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

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

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

变更历史

示例

json_to_tsvector() 的基本用法示例

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

filter 中包含 JSON 数组键

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

覆盖默认文本搜索配置

postgres=# SELECT json_to_tsvector('simple',
                                     '{"a": "The Quick Brown Fox",
                                     "b": "Jumps Over The Lazy Dog"}'::json,
                                     '["numeric","all"]');
                                      json_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(json_to_tsvector('{"a": "The Quick Brown Fox",
                                     "b": "Jumps Over The Lazy Dog"}'::json,
                                     '"numeric"'));
 length 
--------
      0
(1 row)

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

如果提供了无效的 filter 值,则会引发 ERROR

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

分类

全文搜索JSON系统函数

另请参阅

jsonb_to_tsvector()to_tsvector()

反馈

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