日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用案例

更新時間:

本文將引導您如何使用pgsearch插件在云原生數據倉庫 AnalyticDB PostgreSQL 版數據庫中基于BM25算法實現全文檢索。下面將使用維基百科數據集作為案例數據集,詳細介紹如何導入數據集、創建索引并查詢。

前提條件

  • 實例版本為內核版本v7.1.0.0及以上的AnalyticDB PostgreSQL 7.0版

  • 已經安裝pgsearch插件。

    說明

    如您未安裝,請提交工單聯系工作人員協助安裝(需要重啟實例)。

操作步驟

  1. 導入維基百科數據集到云原生數據倉庫 AnalyticDB PostgreSQL 版數據庫中。

    本次示例數據文件為wiki-articles-1w.json。數據文件中包含以下字段:url、title、body。共有1萬行數據。

    1. 創建temp_json表。

      CREATE TABLE temp_json(data JSONB);
    2. 通過COPY命令將數據文件導入到新建的temp_json表中。請替換/path/to/wiki-articles-1w.json為數據文件的實際路徑。

      \COPY temp_json(data) FROM '/path/to/wiki-articles-1w.json' CSV QUOTE E'\x01' DELIMITER E'\x02';
      說明

      由于數據本身含有引號和逗號等字符,因此此處使用非標準字符 E'\x01' 作為引號,E'\x02' 作為分隔符,確保文件中的所有數據都能被正確解析而不產生歧義。

    3. 創建wiki表。

      CREATE TABLE wiki (
          id SERIAL PRIMARY KEY,
          url TEXT,
          title TEXT,
          body TEXT
      );
    4. 將temp_json表中的數據解析并通過INSERT命令導入到wiki表中。

      INSERT INTO wiki(url, title, body)
      SELECT data->>'url' AS url,
             data->>'title' AS title,
             data->>'body' AS body
      FROM (SELECT data FROM temp_json) A;
  2. 創建BM25索引。

    使用pgsearch插件提供的create_bm25函數在wiki表的body字段上創建BM25索引。

    CALL pgsearch.create_bm25(
        index_name => 'wiki_idx',
        table_name => 'wiki',
        text_fields => '{body: {}}'
    );
  3. 使用BM25索引進行查詢。

    使用新建的BM25索引進行全文檢索。查找與關鍵詞“artificial intelligence”最相關的20條數據,返回結果按相關性排序,示例如下。

    SELECT * FROM wiki
    ORDER BY body @@@ pgsearch.config('body:"artificial intelligence"')
    LIMIT 20;

完整示例語句

以下是上文操作步驟中涉及的所有示例語句。

-- 導入JSON文件
CREATE TABLE temp_json(data JSONB);
\COPY temp_json(data) FROM '/path/to/wiki-articles-1w.json' CSV QUOTE E'\x01' DELIMITER E'\x02';

-- 創建wiki表
CREATE TABLE wiki (
    id SERIAL PRIMARY KEY,
    url TEXT,
    title TEXT,
    body TEXT
);

-- 解析JSONB數據,并導入到wiki表
INSERT INTO wiki(url, title, body)
SELECT values->>'url' AS url,
       values->>'title' AS title,
       values->>'body' AS body
FROM (SELECT data AS values FROM temp_json LIMIT 10000) A;

-- 創建BM25索引
CALL pgsearch.create_bm25(
    index_name => 'wiki_idx',
    table_name => 'wiki',
    text_fields => '{body: {}}'
);

-- 全文檢索
SELECT * FROM wiki
ORDER BY body @@@ pgsearch.config('body:"artificial intelligence"')
LIMIT 20;