首页 > 解决方案 > PostgreSQL 全文搜索调整

问题描述

考虑以下 PostgreSQL 全文 SQL 查询:

select ts_rank(to_tsvector('the best idea in the world'), to_tsquery(:query_text));

the:query_text是下文中用于表达问题的占位符

它需要一些调整,以便:

  1. 它考虑了查询词在搜索向量中的位置,使靠近开头的词具有更高的优先级。例如,:query_text = 'best'在 时具有更高的排名:query_text = 'idea'

  2. 它应该搜索查询中的任何单词。同时,多个匹配的词具有更高的排名。例如,:query_text = 'best idea'当 时,排名应该更高:query_text = 'best'

  3. 它应该进行部分匹配。所以这:query_text = 'worl'应该有效。

我知道phraseto_tsquery可以使用实现 #2 来代替to_tsquery. 但它不满足#3。此外,仅仅满足#1 是不够的。

PG的哪些功能和方法可以满足所有需求?

标签: postgresqlfull-text-search

解决方案


推荐阅读