У меня есть список заголовков и описаний в таблице, которые проиндексированы в столбце tsvector . Как я могу реализовать Поиск Google как полнотекстовый поиск в Postgres для этих полей. Я пробовал различные функции, предлагаемые стандартным Postgres, такие как
to_tsquery('apple | orange') -- apple | orange
Эта функция возвращает строки, если она имеет один из этих терминов, поэтому она не дает очень релевантных результатов наверху который должен иметь оба условия.
plainto_tsquery('apple orange') -- apple & orange
Для этой функции требуются все условия в запросе. Но я хочу, чтобы результаты включали сначала и яблоко, и апельсин, но все же могут иметь результаты, включая даже одно из этих терминов чуть позже в результатах.
phraseto_tsquery('apple orange') -- apple <> orange
Эта функция соответствует только оранжевый , за которым следует яблоко , но не наоборот. Но для меня апельсин <> яблоко также по-прежнему актуально.
Я также пробовал websearch_to_tsquery()
, но он ведет себя очень похоже на вышеуказанные функции.
Как я могу попросить Postgres сначала перечислить очень релевантные строки, которые содержат большинство терминов в поисковом запросе независимо от порядка терминов, а затем следуют строки с меньшим количеством терминов?