当前位置: 首页 > 面试题库 >

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

杜禄
2023-03-14
问题内容

我是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));
```



 类似资料:
  • 问题内容: 我试图找到一种方法来返回具有动态列数的记录集。我可以编写一个查询来生成需要的列名列表,如下所示: 这将返回一个简短的列表,例如’poke’,’prod’,’hit’,’drop’等。然后,我希望生成一个表,其中显示了一系列测试,其中每个测试都在其中运行。每天早晨,我们查看开发人员的工作并对其进行戳戳和刺戳,以便每天进行每次测试。我可以静态编写此查询: 但是,这是硬编码到我们每天运行的测

  • 我想编写一个简单的查询来选择PostgreSQL中的许多列。但是,我一直收到错误-我尝试了几个选项,但它们对我不起作用。目前我收到以下错误: 组织。postgresql。util。PSQLException:错误:“列”处或附近出现语法错误 要获取具有值的列,请尝试以下操作: 有什么想法吗?

  • 问题内容: 我想编写一个简单的查询来选择PostgreSQL中的许多列。但是,我不断收到错误-我尝试了一些选项,但它们对我没有用。目前,我收到以下错误: org.postgresql.util.PSQLException:错误:“列”处或附近的语法错误 要获取具有值的列,请尝试以下操作: 有任何想法吗? 问题答案: 是 保留字 。除非您双引号,否则不能将其用作标识符。像:。 不过,这并不意味着您应

  • 我在中实现了分页,因为还有行排序。当我点击列标题进行排序时,我的问题就出现了。它对10行的当前视图(行的视图大小)进行排序,而不是对整个数据进行排序。 我从分页中传递JTable的行值中获取分页代码。

  • 我试图在Hibernate中执行命名查询。查询在此映射文件中定义: MxePosition类如下: 我试图做的是让命名查询返回由另一列分组的一列的总和。然而,Hibernate抛出了一个错误,我怀疑这是因为查询结果不包含ID列。 有办法吗?必须能够在Hibernate中执行包含GROUP BY子句的查询,而不在结果中包含ID。 如果有更好的方法,我愿意接受其他不使用命名查询的建议。

  • 问题内容: 输入是一个长度为’n’的数组。我需要生成数组元素的所有可能组合,包括输入数组中元素较少的所有组合。 随着重复,所以 .. 我已经尝试过这样的事情: 它正在生成无重复的组合…因此我需要以某种方式进行修改。 问题答案: 在递归查询中,将删除迭代中使用的搜索表中的术语,然后对其余记录重复查询。在您的情况下,这意味着一旦处理完第一个数组元素(“ A”),就不再可用于数组元素的进一步排列。为了重