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