2025年9月25日: PostgreSQL 18 釋出!
支援版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.13. dict_xsyn — 示例同義詞全文搜尋字典 #

dict_xsyn (擴充套件同義詞字典) 是全文搜尋的附加字典模板的一個示例。這種字典型別用同義詞組替換單詞,因此可以使用任何同義詞來搜尋一個單詞。

F.13.1. 配置 #

dict_xsyn 字典接受以下選項:

  • matchorig 控制字典是否接受原始單詞。預設值為 true

  • matchsynonyms 控制字典是否接受同義詞。預設值為 false

  • keeporig 控制字典的輸出是否包含原始單詞。預設值為 true

  • keepsynonyms 控制字典的輸出是否包含同義詞。預設值為 true

  • rules 是包含同義詞列表的檔案的基本名稱。該檔案必須儲存在 $SHAREDIR/tsearch_data/ 目錄中 (其中 $SHAREDIR 指的是 PostgreSQL 安裝的共享資料目錄)。其名稱必須以 .rules 結尾 (此後綴不包含在 rules 引數中)。

規則檔案具有以下格式:

  • 每一行代表一個單詞的同義詞組,該單詞首先出現在行上。同義詞之間用空格分隔,如下所示:

    word syn1 syn2 syn3
    
  • 井號 (#) 是註釋分隔符。它可以出現在行中的任何位置。該行剩餘的部分將被忽略。

請檢視安裝在 $SHAREDIR/tsearch_data/ 中的 xsyn_sample.rules 檔案,其中包含一個示例。

F.13.2. 用法 #

安裝 dict_xsyn 擴充套件會建立一個名為 xsyn_template 的文字搜尋模板,並基於此模板建立一個名為 xsyn 的字典,使用預設引數。您可以修改引數,例如:

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false);
ALTER TEXT SEARCH DICTIONARY

或者基於該模板建立新的字典。

要測試該字典,您可以嘗試

mydb=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {word,syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false, MATCHSYNONYMS=true);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}

mydb# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false);
ALTER TEXT SEARCH DICTIONARY

mydb=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {word}

實際使用將涉及將其包含在文字搜尋配置中,如 第 12 章中所述。這可能如下所示:

ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;

提交更正

如果您在文件中發現任何不正確、與您在使用特定功能時的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。