dict_xsyn (擴充套件同義詞字典) 是全文搜尋的附加字典模板的一個示例。這種字典型別用同義詞組替換單詞,因此可以使用任何同義詞來搜尋一個單詞。
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 檔案,其中包含一個示例。
安裝 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;
如果您在文件中發現任何不正確、與您在使用特定功能時的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。