为什么我的浮点值总是为postgres查询中的所有条目返回0?

时间:2018-04-25 07:38:15

标签: sql postgresql full-text-search

我一直想将全文搜索结合到我的网站中,但是从搜索中获得返回结果的排名正在阻碍我。 docs显示了如何执行此操作,但我选择的所有帖子条目都会保持为0。

my_app_development=# SELECT content, ts_rank(to_tsvector('microposts.content'), query) 
AS rank FROM microposts, to_tsquery('sit') query WHERE microposts.content @@ query 
ORDER BY rank DESC LIMIT 10;
                      content                      | rank
---------------------------------------------------+------
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 Vel sit ut qui aperiam aut sunt.                  |    0
 Vel sit ut qui aperiam aut sunt.                  |    0
 Vel sit ut qui aperiam aut sunt.                  |    0
 Vel sit ut qui aperiam aut sunt.                  |    0
 Dolorem sed omnis iusto sit inventore quia dolor. |    0
 (10 rows)

这是预期的行为,如果是这样,我做错了什么。

干杯。

利。

1 个答案:

答案 0 :(得分:1)

您要查看每行to_tsvector('microposts.content')中相同词组的费率,而应使用ts_rank(to_tsvector(content),query)

另外,我认为您应该定义语言以获得准确的结果:

SELECT content, ts_rank(to_tsvector('latin',content), query) 
AS rank FROM microposts, to_tsquery('latin','sit') query WHERE microposts.content @@ query 
ORDER BY rank DESC LIMIT 10;

我也不确定sit是否不是一个可以忽略的停用词......