La estructura de datos básica para un sistema de recuperación de texto es un Índice invertido . Básicamente, se trata de una lista de palabras encontradas en la colección de documentos con una lista de los documentos en los que aparecen. También puede tener metadatos sobre la aparición de cada documento, como la cantidad de veces que aparece la palabra.
Los documentos que contienen las palabras se pueden consultar haciendo coincidir los términos de búsqueda. Para determinar la relevancia, una heurística conocida como Cosine Ranking se calcula sobre los aciertos. Esto funciona construyendo un vector n-dimensional con un componente para cada uno de los n términos de búsqueda. También puede ponderar los términos de búsqueda si lo desea. Este vector proporciona un punto en el espacio n-dimensional que corresponde a sus términos de búsqueda.
Se puede construir un vector similar basado en las ocurrencias ponderadas en cada documento a partir del índice invertido con cada eje en el vector correspondiente al eje para cada término de búsqueda. Si calcula un producto escalar de estos vectores, obtiene el coseno del ángulo entre ellos. 1.0 es equivalente a cos (0), lo que supondría que los vectores ocupan una línea común desde el origen. Cuanto más juntos estén los vectores, menor será el ángulo y más cerca estará el coseno de 1,0.
Si ordena los resultados de búsqueda por el coseno (o los coloca en una cola de prioridad como mg hace) obtienes lo más relevante. Los algoritmos de relevancia más inteligentes tienden a jugar con los pesos de los términos de búsqueda, sesgando el producto escalar a favor de términos con alta relevancia.
Si quieres profundizar un poco, Administrar Gigabytes por Bell y Moffet analiza la arquitectura interna de los sistemas de recuperación de texto.