有两种索引可以被用来加速全文搜索。注意全文搜索并非一定需要索引,但是在一个定期会被搜索的列上,通常需要有一个索引。
CREATE INDEX name
ON table
USING GIN(column
);
创建一个基于 GIN(通用倒排索引)的索引。column
必须是tsvector
类型。
CREATE INDEX name
ON table
USING GIST (column
[ { DEFAULT | tsvector_ops } (siglen = number
) ] );
创建一个基于 GiST(通用搜索树)的索引。column
可以是tsvector
或tsquery
类型。可选整数参数siglen
确定以字节为单位的签名长度(详见下文)。
GIN 索引是更好的文本搜索索引类型。作为倒排索引,每个词(词位)在 其中都有一个索引项,其中有压缩过的匹配位置的列表。多词搜索可以找到 第一个匹配,然后使用该索引移除缺少额外词的行。GIN 索引只存储 tsvector
值的词(词位),并且不存储它们的权重标签。因此, 在使用涉及权重的查询时需要一次在表行上的重新检查。
一个 GiST 索引是有损的,这表示索引可能产生假匹配,并且有必要检查真实的表行来消除这种假匹配(PostgreSQL在需要时会自动做这一步)。GiST 索引之所以是有损的,是因为每一个文档在索引中被表示为一个定长的签名。以字节为单位的签名长度由可选整数参数 siglen
的值决定。 默认签名长度(未指定 siglen
时)为
124 字节,最大签名长度为 2024 字节。该签名通过哈希每一个词到一个 n 位串中的一个单一位来产生,通过将所有这些位 OR 在一起产生一个 n 位的文档签名。当两个词哈希到同一个位位置时就会产生假匹配。如果查询中所有词都有匹配(真或假),则必须检索表行查看匹配是否正确。更长的签名导致更精确的搜索(扫描索引的一小部分和更少的堆页面),但代价是更大的索引。
GiST 索引可以被覆盖,例如使用INCLUDE
子句。 包含的列可以具有没有任何 GiST 操作符类的数据类型。 包含的属性将非压缩存储。
有损性导致的性能下降归因于不必要的表记录(即被证实为假匹配的记录)获取。因为表记录的随机访问是较慢的,这限制了 GiST 索引的可用性。假匹配的可能性取决于几个因素,特别是唯一词的数量,因此推荐使用词典来缩减这个数量。
注意GIN索引的构件时间常常可以通过增加maintenance_work_mem来改进,而GiST索引的构建时间则与该参数无关。
对大集合分区并正确使用 GIN 和 GiST 索引允许实现带在线更新的快速搜索。分区可以在数据库层面上使用表继承来完成,或者是通过将文档分布在服务器上并收集外部的搜索结果,例如通过外部数据访问。后者是可能的,因为排名函数只使用本地信息。
SPI_fname — 为指定的列号确定列名大纲char * SPI_fname(TupleDesc rowdesc, int colnumber) 描述 SPI_fname返回一个指定列的列...
SPI_result_code_string — return error code as string大纲const char * SPI_result_code_string(int code);简介 SPI_result_c...
XML DOM 解析下面的实例使用 XML 文件 books.xml。加载一个XML 文件加载一个XML 字符串实例解释XML DOM 属性和方法下面的实例使...
Audio loop 属性 Audio 对象实例将音频设置为循环播放:document.getElementById("myAudio").loop = true;定义和用法loop 属性设...
Meter low 属性 Meter 对象实例改变度量中 low 属性的值:document.getElementById("myMeter").low="60";定义和用法low 属性设置...
Window frames 属性 Window 对象定义和用法 frames 属性返回窗口中所有命名的框架。该集合是 Window 对象的数组,每个 Window 对...
JavaScript shift() 方法 JavaScript Array 对象实例从数组中移除元素:var fruits = [Banana, Orange, Apple, Mango];fruits.shi...
HTML DOM documentMode 属性 Document 对象定义和用法documentMode 属性返回浏览器渲染文档的模式。IE8 使用不同方式渲染页面,...
HTML DOM referrer 属性 Document 对象定义和用法 referrer 属性返回载入当前文档的来源文档的URL。如果当前文档不是通过超级链...