sql >> Database teknologi >  >> RDS >> PostgreSQL

Bruger PostgreSQL tf-idf?

Nej. Inden for funktionen ts_rank er der ingen indbygget metode til at rangere resultater ved hjælp af deres globale (korpus) frekvens. Rangeringsalgoritmen rangerer dog baseret på frekvensen i dokumentet:

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

Så hvis jeg søger efter "hund|chihuahua" ville de følgende to dokumenter have samme rang på trods af den relativt lavere frekvens af ordet "chihuahua":

"I want a dog"
"I want a chihuahua"

Den følgende linje vil dog blive rangeret højere end de to foregående linjer ovenfor, fordi den indeholder det stammede token "hund" to gange i dokumentet:

"dog lovers have an average of 1.5 dogs"

Kort sagt:højere terminsfrekvens i dokumentet resulterer i en højere rang, men en lavere terminsfrekvens i korpuset har ingen indflydelse.

En advarsel:tekstsøgningen ignorerer stopord, så du vil ikke matche på ultrahøjfrekvente ord som "the","a","of","for" osv. (forudsat at du har indstillet dit sprog korrekt)



  1. PHP:svarende til MySQL's funktion SUBSTRING_INDEX ?

  2. Sådan fungerer SQLite Nullif()

  3. MySQL-optimering ved filtrering af nøgleværdi-par som poster

  4. PL/SQL på SquirreL SQL Client 3.7.1