代码之家  ›  专栏  ›  技术社区  ›  Lee Eather

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

  •  0
  • Lee Eather  · 技术社区  · 6 年前

    我一直想在我的网站中加入全文搜索,但获取搜索返回结果的排名却让我举步维艰。这个 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 回复  |  直到 6 年前
        1
  •  1
  •   Vao Tsun    6 年前

    您正在查找每行中相同短语的速率 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 根本不是一个可以忽略的停止词。。。