配置示例

    • 解析器,用于把文本分解成标记token;
    • 词典列表,用于将每个token转换成词位lexeme。

    每次to_tsvector或to_tsquery函数调用时,都需要指定一个文本搜索配置来指定具体的处理过程。GUC参数default_text_search_config指定了默认的文本搜索配置,当文本搜索函数中没有显式指定文本搜索配置参数时,将会使用该默认值进行处理。

    openGauss中预定义有一些可用的文本搜索配置,用户也可创建自定义的文本搜索配置。此外,为了便于管理文本搜索对象,还提供有多个gsql元命令,可以显示有关文本搜索对象的信息(详细请参见《工具参考》中“客户端工具 >元命令参考”章节)。

    1. 创建一个文本搜索配置ts_conf,复制预定义的文本搜索配置english。

    2. 假设同义词词典定义文件pg_dict.syn内容如下:

      1. pgsql pg
      2. postgresql pg

      执行如下语句创建Synonym词典:

    3. 创建一个Ispell词典english_ispell(词典定义文件来自开源词典)。

      1. postgres=# CREATE TEXT SEARCH DICTIONARY english_ispell (
      2. TEMPLATE = ispell,
      3. DictFile = english,
      4. AffFile = english,
      5. StopWords = english,
      6. FILEPATH = 'file:///home/dicts'
    4. 在文本搜索配置中,选择设置不索引或搜索某些token类型。

      1. postgres=# ALTER TEXT SEARCH CONFIGURATION ts_conf
      2. DROP MAPPING FOR email, url, url_path, sfloat, float;
    5. 使用文本检索调测函数ts_debug()对所创建的词典配置ts_conf进行测试。

    6. 可以设置当前session使用ts_conf作为默认的文本搜索配置。此设置仅在当前session有效。

      1. postgres=# \dF+ ts_conf
      2. Parser: "pg_catalog.default"
      3. Token | Dictionaries
      4. -----------------+-------------------------------------
      5. asciihword | pg_dict,english_ispell,english_stem
      6. asciiword | pg_dict,english_ispell,english_stem
      7. file | simple
      8. host | simple
      9. hword_asciipart | pg_dict,english_ispell,english_stem
      10. hword_numpart | simple
      11. hword_part | pg_dict,english_ispell,english_stem
      12. int | simple
      13. numword | simple
      14. uint | simple
      15. version | simple
      16. word | pg_dict,english_ispell,english_stem
      17. postgres=# SET default_text_search_config = 'public.ts_conf';
      18. SET
      19. postgres=# SHOW default_text_search_config;
      20. default_text_search_config
      21. ----------------------------
      22. (1 row)