gpt4 book ai didi

mysql - 在 Postgresql 中使用分数/排名的 FULLTEXT 查询

转载 作者:可可西里 更新时间:2023-11-01 07:17:14 24 4
gpt4 key购买 nike

我是 Postgres 的新手,我不知道如何将这个 MySQL 查询转换为 postgres:

SELECT pictures.id, MATCH (title, cached_tag_list) AGAINST ('phrase') AS score FROM pictures WHERE MATCH (title, cached_tag_list) AGAINST ('phrase') ORDER BY score DESC;

最佳答案

Postgres 全文搜索与 MySQL 全文搜索略有不同。它有更多选项,但要按照您喜欢的方式工作可能会有点困难。

本文档告诉您如何对搜索结果进行排名,但我强烈建议您阅读手册中的整个全文部分以了解您可以使用它做什么:http://www.postgresql.org/docs/current/interactive/textsearch-controls.html#TEXTSEARCH-RANKING

基本上,您的查询等效于:

SELECT pictures.id, ts_rank_cd(textsearch, 'phrase') AS score
FROM pictures
ORDER BY score DESC

如您所见,这使用了 textsearch,这是您必须自己定义的内容。对于简短版本,请阅读:http://www.postgresql.org/docs/current/interactive/textsearch-tables.html

查询本质上非常简单:

SELECT pictures.id, ts_rank_cd(to_tsvector('english', pictures.title), 'phrase') AS score
FROM pictures
ORDER BY score DESC

但我强烈建议同时添加索引:

CREATE INDEX pictures_title ON pictures USING gin(to_tsvector('english', title));

关于mysql - 在 Postgresql 中使用分数/排名的 FULLTEXT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com