Я пытаюсь реализовать пошаговый поиск с использованием PostgreSQL. Проблема, с которой я сталкиваюсь - это ранжирование результатов. Я бы хотел, чтобы полные совпадения оценивались выше, чем частичные, и я не знаю, как это сделать. Например, в этом запросе (чтобы показать, как вещи ранжируются, когда пользователь вводит запрос):
select
ts_rank_cd(to_tsvector('hello jonathan'), to_tsquery('jon:*')),
ts_rank_cd(to_tsvector('hello jonathan'), to_tsquery('jonath:*')),
ts_rank_cd(to_tsvector('hello jonathan'), to_tsquery('jonathan:*'))
или наоборот (чтобы показать, как разные документы ранжируют один и тот же запрос)
select
ts_rank_cd(to_tsvector('hello jon'), to_tsquery('jon:*')),
ts_rank_cd(to_tsvector('hello jonah'), to_tsquery('jon:*')),
ts_rank_cd(to_tsvector('hello jonathan'), to_tsquery('jon:*'))
все рейтинги возвращают 0,1. Как бы я мог сделать более полные результаты рангом выше?