sql >> Databasteknik >  >> RDS >> Mysql

Fulltextsökningsrelevans mäts i?

Den grundläggande datastrukturen för ett texthämtningssystem är ett inverterat index . Detta är i huvudsak en lista över ord som finns i dokumentsamlingen med en lista över de dokument de förekommer i. Den kan också ha metadata om förekomsten för varje dokument, till exempel hur många gånger ordet förekommer.

Dokument som innehåller orden kan efterfrågas genom att matcha söktermerna. För att bestämma relevans, en heuristik känd som en Cosinusranking beräknas på träffarna. Detta fungerar genom att konstruera en n-dimensionell vektor med en komponent för var och en av de n söktermerna. Du kan även vikta söktermerna om så önskas. Denna vektor ger en punkt i det n-dimensionella rymden som motsvarar dina söktermer.

En liknande vektor baserad på de viktade förekomsterna i varje dokument kan konstrueras från det inverterade indexet med varje axel i vektorn som motsvarar axeln för varje sökterm. Om du beräknar en punktprodukt av dessa vektorer får du cosinus för vinkeln mellan dem. 1,0 är ekvivalent med cos (0), vilket skulle anta att vektorerna upptar en gemensam linje från origo. Ju närmare vektorerna är desto mindre är vinkeln och desto närmare är cosinus 1,0.

Om du sorterar sökresultaten efter cosinus (eller lägger in dem i en prioriterad kö som mg a> gör) får du det mest relevanta. Smartare relevansalgoritmer tenderar att fiffla med söktermernas vikter och snedvrida punktprodukten till förmån för termer med hög relevans.

Om du vill gräva lite, Hantera Gigabyte av Bell och Moffet diskuterar den interna arkitekturen för system för texthämtning.



  1. Hur får man effektiv Sql Server-deadlock-hantering i C# med ADO?

  2. MySQL-problem med att uppdatera DATETIME-fältet från ISO 8601-format

  3. Hur LOAD_FILE()-funktionen fungerar i MySQL

  4. Introduktion till specialfrågor