postgresql - 未记录的 jsonb_to_tsvector 函数
问题描述
我正在使用 PstgreSQL v12,并且有一个本机函数\df jsonb_to_tsvector
......但它没有在pg guide functions-json 和其他页面中描述。这是一个有趣的功能,我可以使用它,可靠吗?或者它是一种“迷失在命名空间”的错误?
重要提示:即使谷歌找到它,我也将引用缺失(或“另见”部分缺失)视为 PG 指南错误。它是一个jsonb_*
原生函数:所有必须在 pg guide functions-json 中引用。
笔记
在这个 2018 年的旧页面上,我们可以找到如下内容:
CREATE TABLE test (id int, payload jsonb);
INSERT INTO test VALUES
(1,'{"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","Abbrev":"ISO 8879:1986","SortAs":"SGML","Acronym":"SGML","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup","GlossTerm":"Standard Generalized Markup Language"}}}}}'::jsonb)
,(2,'{"menu":{"id":"file","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]},"value":"File"}}'::jsonb)
,(3,'{"x":[1,2,3]}'::jsonb)
;
-- it is running and results are fine!
SELECT id, jsonb_to_tsvector('english', payload, '["all"]') FROM test;
SELECT id, jsonb_to_tsvector('english', payload, '["numeric","key"]') FROM test;
...而且它“失去了 2 年”。
(回答后编辑)
投票理想指南
在回答评论@a_horse_with_no_name 解释我的立场,“......按照你的逻辑,array_to_tsvector
需要与数组函数一起列出......”,并且他的立场是相反的。
Stackoverflow 社区是民主的,我们可以使用高效的投票机制。我正在创建一个 Wiki 答案,供您在下面投票作为替代答案……让我们做一个实验。每个答案都是一个位置选择:
在下面投票这个答案为“不另见部分”并且没有引用。您同意指南本身就很好,中心页面不需要引用其他功能。
为“另见部分”或引文的完整性投票下面的其他答案。您同意指南不好,中心页面需要引用其他功能。
是时候投票了postgresql.org/docs
?
我从来不明白为什么“我们的” PostgreSQL 指南postgresql.org/docs
不提供“另见”部分。
几乎所有 Wikipedia 文章都有“另见”部分,几乎所有流行的编程语言:PHP示例、PostGIS示例等或“另见”框,如Python 指南。
在一门好的编程语言中,基于共享特征对本地函数组进行分类和定义并不困难。PostgreSQL 有一个很大的社区,因此也很容易检查关于定义相似原生函数组的共识......有时更容易:所有带前缀的函数array_
都在“所有原生数组函数”的集合中,所有函数都带有前缀jsonb_
位于“所有原生 JSONb 函数”的集合中。
这也是一种“指南完整性原则”:解释“G组所有功能”的指南页面需要解释或至少引用G组的所有功能。“JSON 函数”页面适用于所有原生 JSON 函数,“ARRAY 函数”页面适用于所有原生 JSON 函数。
PS:关于此上下文中的“本机功能”定义,扩展名被排除在外。例如 jsonb 函数和扩展的数组函数,如hstore不是原生的。
问题:是否有postgresql.org/docs
像这里一样的民主投票机制?
解决方案
该功能记录在文本搜索功能中
将文档中由过滤器指定的每个值减少为 tsvector,然后按文档顺序连接这些值以生成单个 tsvector。
推荐阅读
- java - 导出创建新文件的应用程序的可运行 JAR
- r - 有没有办法从 ASC 文件中逐行读取并在特定子字符串后检查它?
- linux-kernel - 如何调试 MDIO 总线扫描失败?
- vue.js - 如何在 Vue.js 中访问嵌套数组中的数据?
- python - audioread.exceptions.NoBackendError Midi 文件
- python - 为什么环境收集器和 doctree-resolved 之间的节点实例不同?
- ios - 在将相机从二维码移开之前不会播放音频 - iOS
- php - Codeigniter:添加 order_by 查询时排序不工作
- c - 当流是标准输入时,函数 getw() 如何工作?
- mongodb - 按文档字段对字典值进行分组