全文搜索通常也就是文本搜索,它可以提供满足查询的识别自然语言的能力,并且任意性地通过相关性查询进行排序。搜索最常见的类型就是找到所有包含给定的查询术语的记录,并且以相似性的查询顺序返回它们。
对于~、~*、like和ilike操作符来说,它们缺少很多特性:①对语言支持较弱,比如不能识别单词的复数形式。②没有有效的分类和排序手段 。 ③执行速度缓慢,通常就是因为无法有效的使用索引。
全文索引允许文档被预处理,并且它可以为后边的快速搜索保存一个索引。预处理做的工作主要有:①解析文档标记。比如它可以标识不同类别的记号,它可以区分数字、复合词、电子邮件地址等等,它们使用不同的处理方式。我们的pgsql使用解析器来执行这一步。②转换标记为词。词是一个字符串,就像一个标记一样,但是它被标准化过,这样同一个词的不同形式都是一样的。比如它们一般会删除后缀。我们的pgsql使用词典执行这一步。它可以提供各种标准词典,以及为特定的需求创造的自定义词典。③为优化搜索存储预处理文档。通常每个文档都可以表示为标准化词汇排序数组。
对于字典,它可以允许细粒度控制如何使用合适的字典规范化标记。我们可以:①定义不被索引的屏蔽词。②映射同义词到一个词。③使用同义词词典将短语映射到一个词。④根据词典将词的不同形式映射到一种范式。⑤根据词根将一个词的不同形式映射成为一种范式。
通常一个文档就是全文搜索系统的搜索单元,它可以是一篇文章或者是一封邮件。文本搜索引擎必须能够解析这个文档,而且可以存储它们同关键词的联系性,而这些联系用来搜索包含查询词的文档。
在pgsql中,文档通常是一个数据库表中一行的文本字段,或者是这些字段的可能组合(级联),可能存储在多个表中或者动态的获得。也就是说,一个文档可以由索引的不同部分部分构成,它不一定非要作为一个整体存储。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。