PostgreSQL dict_xsyn

2021-09-16 15:41 更新
F.12.1. 配置
F.12.2. 用法

dict_xsyn(擴展同義詞字典)是一個附加全文搜索字典模板的例子。這種字典類型將詞替換為它們的同義詞分組,并且讓使用其任一同義詞進行搜索變得可能。

F.12.1. 配置

一個dict_xsyn詞典接受以下選項:

  • matchorig控制該詞典是否接受原生詞。默認為true

  • matchsynonyms控制該詞典是否接受同義詞。默認為false

  • keeporig控制原生詞是否被包括在詞典的輸出中。默認為true

  • keepsynonyms控制同義詞是否被包括在詞典的輸出中。默認為true

  • rules是包含同義詞列表的文件的基本名。這個文件必須被存儲在$SHAREDIR/tsearch_data/(其中$SHAREDIR表示PostgreSQL安裝的共享數(shù)據(jù)目錄)中。它的名稱必須以.rules結(jié)束(這不包括在 rules參數(shù)中)。

規(guī)則文件具有下面的格式:

  • 每一行表示一個單一詞的同義詞分組,它在該行中首先被給出。同義詞被空白分隔,這樣:

    word syn1 syn2 syn3
    

  • 井號(#)是注釋定界符。它可以出現(xiàn)在一行中的任何位置。該行的剩余部分將被跳過。

例如,可以看看安裝在$SHAREDIR/tsearch_data/中的xsyn_sample.rules。

F.12.2. 用法

安裝dict_xsyn擴展會用默認參數(shù)創(chuàng)建一個文本搜索模板xsyn_template以及一個基于它的詞典xsyn。你可以修改參數(shù),例如

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

或者基于該模板創(chuàng)建新的詞典。

要測試該詞典,你可以嘗試

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}

現(xiàn)實世界的用法將涉及將它包括在一個第 12 章中描述的文本搜索配置中??雌饋硐襁@樣:

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號