模式搜索和 PostgreSQL 全文搜索:理解不匹配之处

主要观点:请求在产品中实现全局查找功能,考虑用 PostgreSQL 的全文搜索(FTS),但发现其不适合模式搜索,本文旨在理解 PostgreSQL FTS 基础并进行实践实验以说明其不适合模式搜索的原因。
关键信息

  • PostgreSQL FTS 设计用于基于语言学的搜索,不适合模式搜索,如无通配符、子串或正则表达式匹配等。
  • 介绍了 PostgreSQL FTS 的基本概念,如文档、tsvector、lexeme 等。
  • 通过创建简单模式和插入数据进行实践实验,展示了在 PostgreSQL 中进行模式搜索的结果及局限性。
    重要细节
  • FTS 按词或短语进行搜索,会对文本进行分词和词干提取等处理,丢弃原始文本格式,不支持混合索引等。
  • 在实践实验中,创建了存储库存物品的表,添加了包含 tsvector 表示的列和 GIN 索引,进行了不同模式的搜索实验,如'2vd''vdf''inv:* & voip & orange'等,说明了搜索结果及原因。
  • 最后得出结论,PostgreSQL FTS 适合语义、语言感知的搜索,不适合原始模式搜索,但在中小规模应用的通用搜索解决方案中是 Elasticsearch 的很好替代。
  • 提供了 PostgreSQL FTS 文档和实验中使用的图片来源等资源。
阅读 14
0 条评论