tutorial features example solr lucene search-engine

features - solr vs elasticsearch 2018



¿Solr utiliza similitud coseno? (2)

He escrito un pequeño motor de búsqueda como mi proyecto semanal. Se basa en la similitud del coseno entre el vector de consulta y el vector de documento. El vector es calcular el uso de llagas tf-idf de tokens.
He llegado a conocer Apache Solr, que es un motor de búsqueda de texto completo. Mi pregunta es si Solr usa similitud de coseno internamente cuando los resultados de búsqueda de rango?



No. Solr usa algo similar a la similitud del coseno, pero no es lo mismo: hay algunas diferencias clave.

Si visita ese mismo enlace ( https://lucene.apache.org/core/4_10_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html ) y sigue desplazándose hacia abajo, verá "Fórmula de puntuación conceptual Lucene" "y" Fórmula de puntuación práctica de Lucene "que brindan más detalles.

Ignorando los aumentos de índice / tiempo de consulta, las siguientes son algunas diferencias clave:

1. Diferente factor de normalización del documento

En lugar de normalizar cada documento según la norma euclidiana de su vector tf-idf, utiliza "doc-len-norma". Para la medida de similitud predeterminada (DefaultSimilairty) esto es solo 1 / sqrt (número de términos en el documento) que básicamente equivale a 1 / sqrt (sum (tf)), es decir, donde tf es la suma de los recuentos de términos en el documento - no se incluye la cuadratura como con la norma euclidiana y la IDF para cada término. Además, este valor se redondea a un byte para ahorrar espacio. Con mayor frecuencia, esto tendrá un valor diferente al factor de normalización utilizado para la similitud del coseno.

2. Incremento de "coord" adicional

También hay un valor adicional multiplicado en el puntaje igual a: el número de términos de consulta coincidentes en el documento / el número total de términos en la consulta.

Esto proporciona un impulso adicional para los campos (documentos) que coinciden con la mayoría de los términos de la consulta, y puede ser de valor cuestionable. Esto esencialmente está multiplicando la puntuación del vector tf-idf por otro producto interno: el producto interno de estos vectores se convierte en vectores booleanos (0 si no tiene el término dado, 1 si lo hace) con el vector de consulta solo normalizado por su Euclidiana norma.