dict_xsyn
(擴充同義詞字典)是全文檢索的附加字典範本的範例。這種字典類型會將單字替換成其同義詞的群組,因此可以使用任何同義詞來搜尋單字。
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/
中,以取得範例。
安裝 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;
如果您在文件中發現任何不正確、與特定功能不符,或需要進一步澄清的地方,請使用此表單來報告文件問題。