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()"的评论、建议或更正 此处