首页 > 解决方案 > Postgres全文搜索:如何找到两个或多个关键字的文档?

问题描述

表 A 具有列 Summary,该列使用 GIN 对索引列 tsv 进行索引。

select * from A where to_tsquery('vision & computer') @@ tsv 作为,返回所有具有视觉/视觉和计算机/计算机等的数据...

挑战在于如何从关键字列表中找到具有两个或更多单词的数据。例如,列表是:

  1. 计算机
  2. 想象
  3. 热露
  4. 卷积
  5. 谷歌
  6. classifer 如果文档只有一个关键字,则不应返回结果。有没有办法在不列出所有组合的情况下做到这一点?

试图谷歌但找不到任何东西,所以它有点告诉我用关键字搜索真的很糟糕。

标签: postgresqlfull-text-search

解决方案


FTS 搜索索引对此没有特别规定。

您的选择是将查询扩展为 "6 Choose 2" = 15 piped together pairs 'computer & vision | computer & relu | ... convolution & google | ...',或者搜索具有任何术语的文档,然后过滤这些候选者以删除那些没有至少两个条款。

您也许还可以使用 ts_rank,但我不知道您能否可靠地确定应用于分数的阈值。


推荐阅读