我一直想将全文搜索结合到我的网站中,但是从搜索中获得返回结果的排名正在阻碍我。 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)
这是预期的行为,如果是这样,我做错了什么。
干杯。
利。
答案 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
是否不是一个可以忽略的停用词......