全文检索概述

    文本检索缺乏信息系统所要求的必要属性:

    • 没有语义支持,即使是英语。

      由于要识别派生词并不是那么容易,因此正则表达式也不能满足要求。如,satisfies和satisfy,当使用正则表达式寻找satisfy时,并不会查询到包含satisfies的文档。用户可以使用OR搜索多种派生形式,但过程非常繁琐。并且有些词会有上千的派生词,因此容易出错。

    使用全文索引可以对文档进行预处理,并且可以使后续的搜索更快速。预处理过程包括:

    • 将token转换为词素。

    词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。

    数据类型tsvector用于存储预处理文档,tsquery用于存储查询条件,详细请参见文本搜索类型。为这些数据类型提供的函数和操作符请参见。其中最重要的是匹配运算符@@,将在基本文本匹配中介绍。