支援的版本:目前 (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
    
  • 井號 (#) 符號是註解分隔符號。它可以出現在一行中的任何位置。該行的其餘部分將被跳過。

請查看 xsyn_sample.rules,它安裝在 $SHAREDIR/tsearch_data/ 中,以取得範例。

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;

提交更正

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