文字搜尋組態會指定將文件轉換為 tsvector
所需的所有選項:用於將文字分解為權杖的剖析器,以及用於將每個權杖轉換為詞素的字典。 每次呼叫 to_tsvector
或 to_tsquery
都需要文字搜尋組態才能執行其處理。 組態參數 default_text_search_config 指定預設組態的名稱,如果省略明確的組態參數,則文字搜尋函數會使用此組態。 可以在 postgresql.conf
中設定,或使用 SET
命令為個別的工作階段設定。
有幾個預先定義的文字搜尋組態可用,您可以輕鬆建立自訂組態。 為了方便管理文字搜尋物件,提供了一組SQL命令,並且有幾個 psql 命令可顯示有關文字搜尋物件的資訊(第 12.10 節)。
作為範例,我們將建立組態 pg
,從複製內建的 english
組態開始
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
我們將使用 PostgreSQL 特定的同義字清單,並將其儲存在 $SHAREDIR/tsearch_data/pg_dict.syn
中。 檔案內容如下所示
postgres pg pgsql pg postgresql pg
我們定義同義字字典,如下所示
CREATE TEXT SEARCH DICTIONARY pg_dict ( TEMPLATE = synonym, SYNONYMS = pg_dict );
接下來,我們註冊 Ispell 字典 english_ispell
,它有自己的組態檔案
CREATE TEXT SEARCH DICTIONARY english_ispell ( TEMPLATE = ispell, DictFile = english, AffFile = english, StopWords = english );
現在我們可以設定組態 pg
中單字的對應
ALTER TEXT SEARCH CONFIGURATION pg ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH pg_dict, english_ispell, english_stem;
我們選擇不為某些內建組態處理的權杖類型建立索引或搜尋
ALTER TEXT SEARCH CONFIGURATION pg DROP MAPPING FOR email, url, url_path, sfloat, float;
現在我們可以測試我們的組態
SELECT * FROM ts_debug('public.pg', ' PostgreSQL, the highly scalable, SQL compliant, open source object-relational database management system, is now undergoing beta testing of the next version of our software. ');
下一步是將工作階段設定為使用新的組態,該組態是在 public
結構描述中建立的
=> \dF List of text search configurations Schema | Name | Description ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用 此表單 回報文件問題。