F.42. tsearch2

tsearch2模块为使用旧版本tsearch2(文本搜索在 8.3 时才被整合到核心PostgreSQL)的应用提供了向后兼容的文本搜索功能。

F.42.1. 移植性问题

尽管内建的文本搜索特性是基于tsearch2的并且与它在很大程度上相似,仍然有一些区别会导致已有应用中的移植性问题:

有一些问题在替代的tsearch2模块中并未被说明,并且因此将要求修改应用的代码:

F.42.2. 转换一个 8.3 之前的安装

更新一个使用tsearch2的 8.3 之前的安装的推荐方法是:

  1. 使用通常的方法从旧安装制作一个转储,但是确保不要使用pg_dumppg_dumpall-c--clean)选项。

  2. 在新安装中,创建空数据库并且在每一个将使用文本搜索的数据库中安装替代的tsearch2模块。这必须在载入转储数据之前完成。如果旧的安装在public之外的一个模式中放有tsearch2对象,确保调整CREATE EXTENSION命令这样替代的对象会被创建在同一个模式中。

  3. 载入转出数据。这将会报告不少错误,因为无法重新创建原来的tsearch2对象。这些错误可以被忽略,但是这意味着你无法在一个单一事务中恢复转储(例如,你不能使用pg_restore-1开关)。

  4. 检查恢复后的tsearch2配置表的内容(pg_ts_cfg等等),并且根据需要创建等效的内建文本搜索配置。一旦已经从旧的配置表中抽取了所有有用的信息,你就可以删除掉旧的配置表了。

  5. 测试你的应用。

在晚些时候,你可能希望把应用引用重命名成别名文本搜索对象,这样你可以最终卸载替代的tsearch2模块。

F.42.3. 参考文献

Tsearch2 开发站点 http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/