{"kind": "type", "slug": "tsquery", "name": "tsquery", "major": "18", "snapshot": {"casts": [], "facts": [{"label": "目录名称", "value": "pg_catalog.tsquery"}, {"label": "类型 OID", "value": "3615"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "plain"}, {"label": "输入函数", "value": "tsqueryin"}, {"label": "输出函数", "value": "tsqueryout"}], "ranges": [], "aliases": [], "catalog": {"oid": "3615", "descr": "query representation for text search", "typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "tsquery", "typsend": "tsquerysend", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "tsqueryin", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "tsqueryout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "tsqueryrecv", "typstorage": "p", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "3645", "typispreferred": "f", "array_type_name": "_tsquery"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type 系统目录"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast 系统目录"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator 系统目录"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass 系统目录"}, {"url": "/wiki/type/arrays/?v=18", "label": "数组"}, {"url": "/wiki/indexam/btree/?v=18", "label": "btree 索引访问方法"}, {"url": "/wiki/indexam/gist/?v=18", "label": "gist 索引访问方法"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/datatype-textsearch.html", "path": "datatype-textsearch.html", "label": "PostgreSQL 18 English manual", "sha256": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c", "language": "en", "original_url": "/docs/18/datatype-textsearch.html"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "coverage": "source inventory; exact declared input types for operator classes", "sections": [], "operators": [{"oid": "3636", "descr": "text search match", "oprcom": "@@(tsquery,tsvector)", "oprcode": "ts_match_vq", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsvector", "oprname": "@@", "oprrest": "tsmatchsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3637", "descr": "text search match", "oprcom": "@@(tsvector,tsquery)", "oprcode": "ts_match_qv", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@@", "oprrest": "tsmatchsel", "oprowner": "POSTGRES", "oprright": "tsvector", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3660", "descr": "deprecated, use @@ instead", "oprcom": "@@@(tsquery,tsvector)", "oprcode": "ts_match_vq", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsvector", "oprname": "@@@", "oprrest": "tsmatchsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3661", "descr": "deprecated, use @@ instead", "oprcom": "@@@(tsvector,tsquery)", "oprcode": "ts_match_qv", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@@@", "oprrest": "tsmatchsel", "oprowner": "POSTGRES", "oprright": "tsvector", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3674", "descr": "less than", "oprcom": ">(tsquery,tsquery)", "oprcode": "tsquery_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<", "oprrest": "scalarltsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": ">=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3675", "descr": "less than or equal", "oprcom": ">=(tsquery,tsquery)", "oprcode": "tsquery_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<=", "oprrest": "scalarlesel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": ">(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3676", "descr": "equal", "oprcom": "=(tsquery,tsquery)", "oprcode": "tsquery_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "<>(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "t", "oprnamespace": "pg_catalog"}, {"oid": "3677", "descr": "not equal", "oprcom": "<>(tsquery,tsquery)", "oprcode": "tsquery_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3678", "descr": "greater than or equal", "oprcom": "<=(tsquery,tsquery)", "oprcode": "tsquery_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": ">=", "oprrest": "scalargesel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "<(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3679", "descr": "greater than", "oprcom": "<(tsquery,tsquery)", "oprcode": "tsquery_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": ">", "oprrest": "scalargtsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "<=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3680", "descr": "AND-concatenate", "oprcom": "0", "oprcode": "tsquery_and", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "&&", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3681", "descr": "OR-concatenate", "oprcom": "0", "oprcode": "tsquery_or", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "||", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "5005", "descr": "phrase-concatenate", "oprcom": "0", "oprcode": "tsquery_phrase(tsquery,tsquery)", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3682", "descr": "NOT tsquery", "oprcom": "0", "oprcode": "tsquery_not", "oprjoin": "-", "oprkind": "l", "oprleft": "0", "oprname": "!!", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3693", "descr": "contains", "oprcom": "<@(tsquery,tsquery)", "oprcode": "tsq_mcontains", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@>", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3694", "descr": "is contained by", "oprcom": "@>(tsquery,tsquery)", "oprcode": "tsq_mcontained", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3763", "descr": "text search match", "oprcom": "0", "oprcode": "ts_match_tq", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprowner": "POSTGRES", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}], "signature": "tsquery", "description": ["全文检索查询"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-TEXTSEARCH\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">\n<div>\n<div>\n<h2 class=\"title\" style=\"clear: both\">8.11. 文本检索类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><span class=\"productname\">PostgreSQL</span> 提供了两种专为支持全文检索而设计的数据类型。所谓全文检索，是指在一组自然语言<em class=\"firstterm\">文档</em>中查找最匹配某个<em class=\"firstterm\">查询</em>的文档。<code class=\"type\">tsvector</code> 类型以适合文本检索的优化形式表示文档，<code class=\"type\">tsquery</code> 类型则表示文本查询。关于这一功能的详细解释见<a class=\"xref\" href=\"/docs/18/textsearch.html\" title=\"第 12 章 全文检索\">第 12 章</a>；相关函数和操作符的概览见<a class=\"xref\" href=\"/docs/18/functions-textsearch.html\" title=\"9.13. 文本检索函数和操作符\">第 9.13 节</a>。</p>\n<div class=\"sect2\" id=\"DATATYPE-TSVECTOR\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.11.1. <code class=\"type\">tsvector</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">tsvector</code> 值是一个排好序且互不重复的<em class=\"firstterm\">词位</em>（lexeme）列表，这些词已经过<em class=\"firstterm\">正规化</em>，以便把同一单词的不同变体合并起来（详见<a class=\"xref\" href=\"/docs/18/textsearch.html\" title=\"第 12 章 全文检索\">第 12 章</a>）。排序和去重会在输入时自动完成，如下例所示：</p>\n<pre class=\"programlisting\">SELECT 'a fat cat sat on a mat and ate a fat rat'::tsvector;\n                      tsvector\n----------------------------------------------------\n 'a' 'and' 'ate' 'cat' 'fat' 'mat' 'on' 'rat' 'sat'\n</pre>\n<p lang=\"zh\">若要表示包含空白或标点的词位，请用引号将它们括起来：</p>\n<pre class=\"programlisting\">SELECT $$the lexeme '    ' contains spaces$$::tsvector;\n                 tsvector\n-------------------------------------------\n '    ' 'contains' 'lexeme' 'spaces' 'the'\n</pre>\n<p lang=\"zh\">（本例及下例使用美元引用的字符串常量，以避免在字符串内部必须双写引号所造成的混淆。）嵌入的引号和反斜线必须双写：</p>\n<pre class=\"programlisting\">SELECT $$the lexeme 'Joe''s' contains a quote$$::tsvector;\n                    tsvector\n------------------------------------------------\n 'Joe''s' 'a' 'contains' 'lexeme' 'quote' 'the'\n</pre>\n<p lang=\"zh\">还可以为词位附加整数形式的<em class=\"firstterm\">位置</em>：</p>\n<pre class=\"programlisting\">SELECT 'a:1 fat:2 cat:3 sat:4 on:5 a:6 mat:7 and:8 ate:9 a:10 fat:11 rat:12'::tsvector;\n                                  tsvector\n-------------------------------------------------------------------​------------\n 'a':1,6,10 'and':8 'ate':9 'cat':3 'fat':2,11 'mat':7 'on':5 'rat':12 'sat':4\n</pre>\n<p lang=\"zh\">位置通常表示源词在文档中的位置。位置信息可用于接近度排名。位置值的范围为 1 至 16383；更大的数值会被静默设为 16383。同一词位的重复位置会被丢弃。</p>\n<p lang=\"zh\">带有位置的词位还可以进一步附加一个<em class=\"firstterm\">权重</em>标签，其值可以是 <code class=\"literal\">A</code>、<code class=\"literal\">B</code>、<code class=\"literal\">C</code> 或 <code class=\"literal\">D</code>。<code class=\"literal\">D</code> 是默认值，因此在输出中不会显示：</p>\n<pre class=\"programlisting\">SELECT 'a:1A fat:2B,4C cat:5D'::tsvector;\n          tsvector\n----------------------------\n 'a':1A 'cat':5 'fat':2B,4C\n</pre>\n<p lang=\"zh\">权重通常用于反映文档结构，例如把标题中的词和正文中的词区分开来。文本检索排序函数可以为不同的权重标记分配不同优先级。</p>\n<p lang=\"zh\">必须认识到，<code class=\"type\">tsvector</code> 类型本身并不会执行任何词语正规化；它假定输入的词已经按照应用需求完成正规化。例如：</p>\n<pre class=\"programlisting\">SELECT 'The Fat Rats'::tsvector;\n      tsvector\n--------------------\n 'Fat' 'Rats' 'The'\n</pre>\n<p lang=\"zh\">对于大多数英文全文检索应用来说，上述词会被视为尚未正规化，但 <code class=\"type\">tsvector</code> 并不在意。原始文档文本通常应先经过 <code class=\"function\">to_tsvector</code>，以按检索需要对词语进行正规化：</p>\n<pre class=\"programlisting\">SELECT to_tsvector('english', 'The Fat Rats');\n   to_tsvector\n-----------------\n 'fat':2 'rat':3\n</pre>\n<p lang=\"zh\">更多细节仍请参见<a class=\"xref\" href=\"/docs/18/textsearch.html\" title=\"第 12 章 全文检索\">第 12 章</a>。</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-TSQUERY\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.11.2. <code class=\"type\">tsquery</code> </h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">tsquery</code> 值存储要搜索的词位，并可用布尔操作符 <code class=\"literal\">&amp;</code>（AND）、<code class=\"literal\">|</code>（OR）和 <code class=\"literal\">!</code>（NOT）将它们组合起来，也可使用短语搜索操作符 <code class=\"literal\">&lt;-&gt;</code>（FOLLOWED BY）。此外，FOLLOWED BY 还有一种变体 <code class=\"literal\">&lt;<em class=\"replaceable\"><code>N</code></em>&gt;</code>，其中 <em class=\"replaceable\"><code>N</code></em> 是整数常量，用于指定被搜索的两个词位之间的距离。<code class=\"literal\">&lt;-&gt;</code> 等效于 <code class=\"literal\">&lt;1&gt;</code>。</p>\n<p lang=\"zh\">可以使用圆括号强制指定这些操作符的分组方式。若没有圆括号，<code class=\"literal\">!</code>（NOT）的绑定最紧，其次是 <code class=\"literal\">&lt;-&gt;</code>（FOLLOWED BY），再其次是 <code class=\"literal\">&amp;</code>（AND），最后是 <code class=\"literal\">|</code>（OR）。</p>\n<p lang=\"zh\">以下是一些示例：</p>\n<pre class=\"programlisting\">SELECT 'fat &amp; rat'::tsquery;\n    tsquery\n---------------\n 'fat' &amp; 'rat'\n\nSELECT 'fat &amp; (rat | cat)'::tsquery;\n          tsquery\n---------------------------\n 'fat' &amp; ( 'rat' | 'cat' )\n\nSELECT 'fat &amp; rat &amp; ! cat'::tsquery;\n        tsquery\n------------------------\n 'fat' &amp; 'rat' &amp; !'cat'\n</pre>\n<p lang=\"zh\">可选地，<code class=\"type\">tsquery</code> 中的词位可以用一个或多个权重字母标注，这会限制它们只匹配在 <code class=\"type\">tsvector</code> 中带有这些权重之一的词位：</p>\n<pre class=\"programlisting\">SELECT 'fat:ab &amp; cat'::tsquery;\n    tsquery\n------------------\n 'fat':AB &amp; 'cat'\n</pre>\n<p lang=\"zh\">此外，<code class=\"type\">tsquery</code> 中的词位还可以带上 <code class=\"literal\">*</code> 标签来指定前缀匹配：</p>\n<pre class=\"programlisting\">SELECT 'super:*'::tsquery;\n  tsquery\n-----------\n 'super':*\n</pre>\n<p lang=\"zh\">这个查询将匹配 <code class=\"type\">tsvector</code> 中任何以<span class=\"quote\">“<span class=\"quote\">super</span>”</span>开头的词位。</p>\n<p lang=\"zh\">引号的使用规则与前面介绍 <code class=\"type\">tsvector</code> 时相同；同样，与 <code class=\"type\">tsvector</code> 一样，任何需要的词语正规化都必须在转换为 <code class=\"type\">tsquery</code> 类型之前完成。<code class=\"function\">to_tsquery</code> 函数很适合用来实现这种正规化：</p>\n<pre class=\"programlisting\">SELECT to_tsquery('Fat:ab &amp; Cats');\n    to_tsquery\n------------------\n 'fat':AB &amp; 'cat'\n</pre>\n<p lang=\"zh\">请注意，<code class=\"function\">to_tsquery</code> 会像处理其他词一样处理前缀，这意味着下面的比较会返回真：</p>\n<pre class=\"programlisting\">SELECT to_tsvector( 'postgraduate' ) @@ to_tsquery( 'postgres:*' );\n ?column?\n----------\n t\n</pre>\n<p lang=\"zh\">因为 <code class=\"literal\">postgres</code> 会被词干化为 <code class=\"literal\">postgr</code>：</p>\n<pre class=\"programlisting\">SELECT to_tsvector( 'postgraduate' ), to_tsquery( 'postgres:*' );\n  to_tsvector  | to_tsquery\n---------------+------------\n 'postgradu':1 | 'postgr':*\n</pre>\n<p lang=\"zh\">因而它能够匹配<code class=\"literal\">postgraduate</code> 词干化后的形式。</p>\n</div>\n</div>", "manual_path": "datatype-textsearch.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-textsearch.html", "method": "same-major semantic node", "sha256": "32320d15d5bfb37e361c04f241d62cc371e3dc5d574652f37fc7d1ed59150b68", "language": "zh", "matched_nodes": ["#DATATYPE-TEXTSEARCH/div[0]", "#DATATYPE-TEXTSEARCH/div[5]/p[11]", "#DATATYPE-TEXTSEARCH/div[5]/p[13]", "#DATATYPE-TEXTSEARCH/div[5]/p[14]", "#DATATYPE-TEXTSEARCH/div[5]/p[16]", "#DATATYPE-TEXTSEARCH/div[5]/p[18]", "#DATATYPE-TEXTSEARCH/div[5]/p[2]", "#DATATYPE-TEXTSEARCH/div[5]/p[4]", "#DATATYPE-TEXTSEARCH/div[5]/p[6]", "#DATATYPE-TEXTSEARCH/div[5]/p[8]", "#DATATYPE-TEXTSEARCH/div[6]/p[10]", "#DATATYPE-TEXTSEARCH/div[6]/p[11]", "#DATATYPE-TEXTSEARCH/div[6]/p[13]", "#DATATYPE-TEXTSEARCH/div[6]/p[15]", "#DATATYPE-TEXTSEARCH/div[6]/p[17]", "#DATATYPE-TEXTSEARCH/div[6]/p[2]", "#DATATYPE-TEXTSEARCH/div[6]/p[3]", "#DATATYPE-TEXTSEARCH/div[6]/p[4]", "#DATATYPE-TEXTSEARCH/div[6]/p[6]", "#DATATYPE-TEXTSEARCH/div[6]/p[8]", "#DATATYPE-TEXTSEARCH/p[4]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "text search query", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/related/0/label": "pg_type catalog", "/versions/18/related/1/label": "pg_cast catalog", "/versions/18/related/2/label": "pg_operator catalog", "/versions/18/related/3/label": "pg_opclass catalog", "/versions/18/related/4/label": "Arrays", "/versions/18/related/5/label": "btree index access method", "/versions/18/related/6/label": "gist index access method"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "fd28ffb0611be484899c1b7707dcf81c04d28f4358840bb032447d77c46e4719"}, "comparison_data": {"casts": [], "facts": [{"label": "Catalog name", "value": "pg_catalog.tsquery"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Input function", "value": "tsqueryin"}, {"label": "Output function", "value": "tsqueryout"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "3615"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "tsquery", "typsend": "tsquerysend", "typtype": "b", "typalign": "i", "typarray": "_tsquery", "typbyval": "f", "typdelim": ",", "typinput": "tsqueryin", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "tsqueryout", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "tsqueryrecv", "typstorage": "p", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_tsquery"}, "operators": [{"oprcom": "@@(tsvector,tsquery)", "oprcode": "ts_match_qv", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@@", "oprrest": "tsmatchsel", "oprright": "tsvector", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@@@(tsvector,tsquery)", "oprcode": "ts_match_qv", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@@@", "oprrest": "tsmatchsel", "oprright": "tsvector", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "ts_match_tq", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "text", "oprname": "@@", "oprrest": "matchingsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@@(tsquery,tsvector)", "oprcode": "ts_match_vq", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsvector", "oprname": "@@", "oprrest": "tsmatchsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@@@(tsquery,tsvector)", "oprcode": "ts_match_vq", "oprjoin": "tsmatchjoinsel", "oprkind": "b", "oprleft": "tsvector", "oprname": "@@@", "oprrest": "tsmatchsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(tsquery,tsquery)", "oprcode": "tsq_mcontained", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<@", "oprrest": "matchingsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(tsquery,tsquery)", "oprcode": "tsq_mcontains", "oprjoin": "matchingjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "@>", "oprrest": "matchingsel", "oprright": "tsquery", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "tsquery_and", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "&&", "oprrest": "-", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<=(tsquery,tsquery)", "oprcode": "tsquery_ge", "oprjoin": "scalargejoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": ">=", "oprrest": "scalargesel", "oprright": "tsquery", "oprnegate": "<(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<(tsquery,tsquery)", "oprcode": "tsquery_gt", "oprjoin": "scalargtjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": ">", "oprrest": "scalargtsel", "oprright": "tsquery", "oprnegate": "<=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">=(tsquery,tsquery)", "oprcode": "tsquery_le", "oprjoin": "scalarlejoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<=", "oprrest": "scalarlesel", "oprright": "tsquery", "oprnegate": ">(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": ">(tsquery,tsquery)", "oprcode": "tsquery_lt", "oprjoin": "scalarltjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<", "oprrest": "scalarltsel", "oprright": "tsquery", "oprnegate": ">=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(tsquery,tsquery)", "oprcode": "tsquery_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "<>", "oprrest": "neqsel", "oprright": "tsquery", "oprnegate": "=(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "tsquery_not", "oprjoin": "-", "oprkind": "l", "oprleft": "0", "oprname": "!!", "oprrest": "-", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "tsquery_or", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "||", "oprrest": "-", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "tsquery_phrase", "oprjoin": "-", "oprkind": "b", "oprleft": "tsquery", "oprname": "<->", "oprrest": "-", "oprright": "tsquery", "oprnegate": "0", "oprresult": "tsquery", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "=(tsquery,tsquery)", "oprcode": "tsquery_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "tsquery", "oprname": "=", "oprrest": "eqsel", "oprright": "tsquery", "oprnegate": "<>(tsquery,tsquery)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "t"}], "operator_classes": [{"opcname": "tsquery_ops", "opcfamily": "btree/tsquery_ops", "opcintype": "tsquery", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0"}, {"opcname": "tsquery_ops", "opcfamily": "gist/tsquery_ops", "opcintype": "tsquery", "opcmethod": "gist", "opcdefault": "t", "opckeytype": "int8"}]}, "comparison_hash": "3aedfeb78548fb08b9eacdd463272380487f323ce2735f529196d75a402ebcec", "manual_language": "zh", "operator_classes": [{"opcname": "tsquery_ops", "opcowner": "POSTGRES", "opcfamily": "btree/tsquery_ops", "opcintype": "tsquery", "opcmethod": "btree", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "tsquery_ops", "opcowner": "POSTGRES", "opcfamily": "gist/tsquery_ops", "opcintype": "tsquery", "opcmethod": "gist", "opcdefault": "t", "opckeytype": "int8", "opcnamespace": "pg_catalog"}], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}