PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 12. 全文检索 | 下一页

# 12.7. 配置实例

文本搜索配置指定所有选项将文档转换成一个`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

上一页 | 起始页 | 下一页
词典 | 上一级 | 测试和调试文本搜索