PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O PostgreSQL usa tf-idf?


Não. Dentro da função ts_rank, não existe um método nativo para classificar resultados usando sua frequência global (corpus). O algoritmo de classificação, no entanto, classifica com base na frequência dentro do documento:

http://www.postgresql.org/docs/9.3/static /textsearch-controls.html

Então, se eu procurar por "cão|chihuahua", os dois documentos a seguir teriam a mesma classificação, apesar da frequência relativamente menor da palavra "chihuahua":
"I want a dog"
"I want a chihuahua"

No entanto, a linha a seguir teria uma classificação mais alta do que as duas linhas anteriores acima, porque contém o token "dog" duas vezes no documento:
"dog lovers have an average of 1.5 dogs"

Resumindo:uma frequência de termo mais alta no documento resulta em uma classificação mais alta, mas uma frequência de termo mais baixa no corpus não tem impacto.

Uma ressalva:a pesquisa de texto ignora palavras de parada, portanto, você não corresponderá a palavras de frequência ultra-alta como "o", "a", "de", "para" etc (supondo que você tenha definido corretamente seu idioma)