sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder PostgreSQL tf-idf?

Nej. Inom funktionen ts_rank finns det ingen naturlig metod för att rangordna resultat med deras globala (korpus) frekvens. Rangalgoritmen rangordnas dock baserat på frekvens i dokumentet:

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

Så om jag söker efter "hund|chihuahua" skulle följande två dokument ha samma rang trots den relativt lägre frekvensen av ordet "chihuahua":

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

Följande rad skulle dock rankas högre än de två föregående raderna ovan, eftersom den innehåller den stammade token "hund" två gånger i dokumentet:

"dog lovers have an average of 1.5 dogs"

Kort sagt:högre termfrekvens i dokumentet ger en högre rang, men en lägre termfrekvens i korpusen har ingen inverkan.

En varning:textsökningen ignorerar stoppord, så du kommer inte att matcha på ultrahögfrekventa ord som "the","a","of","for" etc (förutsatt att du har ställt in ditt språk korrekt)



  1. Hur man kopplar från en databas och går tillbaka till standarddatabasen i PostgreSQL?

  2. SQL beräkna objektfrekvens med hjälp av flera / beroende kolumner?

  3. Installerar magento, får databasanslutningsfel.

  4. Oracle DBMS Job körs inte