sql >> Databáze >  >> RDS >> PostgreSQL

Používá PostgreSQL tf-idf?

Ne. V rámci funkce ts_rank neexistuje žádná nativní metoda pro řazení výsledků pomocí jejich globální (korpusové) frekvence. Algoritmus hodnocení však hodnotí na základě frekvence v dokumentu:

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

Pokud tedy hledám „pes|čivava“, budou mít následující dva dokumenty stejnou hodnost i přes relativně nižší frekvenci slova „čivava“:

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

Následující řádek by však dostal vyšší hodnocení než předchozí dva řádky výše, protože obsahuje v dokumentu dvakrát pramenitý token „pes“:

"dog lovers have an average of 1.5 dogs"

Stručně řečeno:vyšší frekvence termínů v dokumentu má za následek vyšší hodnocení, ale nižší frekvence termínů v korpusu nemá žádný vliv.

Jedno upozornění:textové vyhledávání ignoruje zastavovací slova, takže se nebudete shodovat se slovy s velmi vysokou frekvencí, jako je "the","a","of","for" atd. (za předpokladu, že jste správně nastavili jazyk)



  1. Únik paměti s OracleCommand

  2. Jedinečné indexy PostgreSQL a velikost písmen

  3. Chyba vztahu Laravel:Nedefinovaná vlastnost:Illuminate\Database\Eloquent\Collection::$id na řádku 1

  4. Oracle PL/SQL:Vytvořte balíček DML online