Почему мое значение с плавающей точкой всегда возвращает 0 для всех записей в запросе postgres? - PullRequest
0 голосов
/ 25 апреля 2018

Я давно хотел включить полнотекстовый поиск в мой веб-сайт, но получение рейтинга результатов поиска по результатам поиска удерживает меня.В документах показано, как это сделать, но в результате я получаю 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 голосов
/ 25 апреля 2018

вы ищете оценку для той же фразы в каждой строке 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 стоп-словом, которое следует игнорировать вообще ...

...