文字搜尋配置指定將文件轉換為 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
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 來報告文件問題。