PostgreSQL Query to Search and Rank Documents Containing "quick"

Answered using ChatGPT 4o by ChatGPT4o

Question:

SELECT *, ts_rank(to_tsvector('english', content), to_tsquery('english', 'quick & fox')) AS rank FROM documents WHERE to_tsvector('english', content) @@ to_tsquery('english', 'quick & fox') ORDER BY rank DESC; 查询包含 quick 的 语句怎么写

Answer:

要查询包含 "quick" 的语句,并使用 PostgreSQL 的全文搜索功能,你可以使用 to_tsqueryto_tsvector 函数。以下是一个示例查询,它会返回包含 "quick" 的文档,并按相关性排序:

SELECT *, ts_rank(to_tsvector('english', content), to_tsquery('english', 'quick')) AS rank
FROM documents
WHERE to_tsvector('english', content) @@ to_tsquery('english', 'quick')
ORDER BY rank DESC;

在这个查询中:

  • to_tsvector('english', content)content 列转换为一个文本搜索向量。
  • to_tsquery('english', 'quick') 创建一个文本搜索查询,查找包含 "quick" 的文档。
  • ts_rank 函数计算每个文档的相关性得分。
  • WHERE 子句过滤出包含 "quick" 的文档。
  • ORDER BY rank DESC 按相关性得分从高到低排序结果。

这样,你就可以查询包含 "quick" 的文档,并按相关性排序。