更新时间:2026-07-20 GMT+08:00
分享

BM25索引

实现了相似文本BM25索引访问方法,比如创建、维护、检索等。创建索引格式请参见《参考》中“SQL参考 > SQL语法 > C > CREATE INDEX”章节。BM25索引不支持UNIQUE、CONCURRENTLY。

  • 重建索引请参见《参考》中“SQL参考 > SQL语法 > R > REINDEX”章节。
  • 删除索引请参见《参考》中“SQL参考 > SQL语法 > D > DROP INDEX”章节。
  • GLOBAL

    分区表GLOBAL索引不支持。

  • ASC

    不支持。

  • CONCURRENTLY

    不支持。

  • UNIQUE

    不支持。

  • COLLATE collation

    不支持。

  • DEDUPLICATION

    不支持复合索引。

  • USING method

    指定创建索引的方法。

    新增可选索引类型BM25:BM25索引,针对文本和文本数组数据的词倒排相似文本检索索引。

  • WITH ( {storage_parameter = value} [, ... ] )

    指定索引方法的存储参数。

    1. storage_parameter:数据存储格式,取值范围{"USTORE", "ASTORE"},需要和原数据表保持一致。
    2. num_parallels:建索引并行度,取值范围1-64的整数,默认值为1。
    3. tokenize_dict:文本数据分词使用词典名,默认值pg_catalog.simple_cn_segmentation为系统默认内置中英文分词词典。具体词典使用和创建方法请参考自定义Tokenweight分词词典
    4. token_hash_bucket_capacity:自定义存储token哈希表的大小,取值范围1000~100000000的整数,默认为10000000。
表1 BM25索引新增系统内部函数

函数名

描述

gs_bm25build

创建基于倒排词的BM25索引。

gs_bm25buildempty

反馈空索引。

gs_bm25options

为索引解析并验证reloptions数组。

gs_bm25insert

将新的元组插入到现有索引中,维护BM25索引。

gs_bm25beginscan

打开索引内部倒排词表容器,准备后续查询。

gs_bm25gettuple

此函数提供执行器获得一条索引数据,在其中实现BM25评分排序检索的核心步骤。

gs_bm25rescan

重置索引扫描结构体上的变量。

gs_bm25endscan

清空索引扫描结构体上的变量并释放。

gs_bm25bulkdelete

将所有索引中的死元组进行重置并且放入FSM中。

gs_bm25vacuumcleanup

更新BM25索引统计信息。

gs_bm25costestimate

针对BM25扫描过程进行代价评估。

表2 BM25索引相关新增系统函数

函数名

描述

gs_bm25_tokenize(text, cstring)

使用指定词典对输入文本进行分词操作,返回被分割的单词文本数组。

gs_bm25_inspect(text)

显示索引磁盘使用和内部词倒排信息等数据。

gs_bm25_distance_text(text, text)

返回bm25文档相似分数,只在使用BM25索引检索时有效。

gs_bm25_distance_textarr(text[], text[])

返回bm25文档相似分数,只在使用BM25索引检索时有效。

表3 BM25索引相关新增GUC参数

参数名

级别

描述

bm25_ranking_metric

会话级(session)

参数数值对应检索时相似文档的评分算法:

0:BM25_OKAPI (默认值),

1:BM25_ATIRE,

2:BM25_L,

3:BM25_PLUS,

4:TF_IDF。

取值范围: [0,127],默认值0。设置为定义范围外的参数数值时使用默认BM25_OKAPI算法。

bm25_ncandidates

会话级(session)

预估索引召回文档数量,推荐使用默认值,过大或者过小的数值会使相似文档排序的索引检索时间变慢。

在查询语句混合where条件使用时,该值失效,数据库会自动估计合适的索引召回文档数量。

取值范围: [0,65535],默认值128。

相关文档