知行与执行 发表于 2023-9-14 12:01:36

在Postgresql有分数/排名的FULLTEXT查询

我是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));
```
页: [1]
查看完整版本: 在Postgresql有分数/排名的FULLTEXT查询