Solr y el cálculo de popularidad

29/09/2014       Sergio Raposo Vargas       OpenCms, OpenCms 8, OpenCms 9, Programación

Una de las funcionalidades más habituales para la que usamos Solr es la implementación de un buscador de contenidos mediante una palabra clave. En este tipo de buscador podemos configurar una serie de restricciones como, buscar por tipos de recursos concreto, por categoría, por un rango de fecha, ..., pero lo más habitual es buscar mediante una serie de palabras clave.

Lo primero que debemos saber es que siempre que realializamos una consulta mediante palabra clave tenemos que hacerlo usando el parámetro "q" de Solr, en lugar del típico "fq".

Cuando usamos una búsqueda mediante el campo q, solr ordena los resultados mediante el campo "score" (puntuación) que genera automáticamente en base a un algoritmo interno, en el cual realiza una serie de cálculos para medir como de importante es cada uno de los resultados encontrados, y así ofrecer al usuario final el mejor resultado posible para las palabras claves buscadas.

En este algoritmo se tienen en cuenta una serie de criterios como son:

  • tf: es sinónimo de frecuencia de los términos - a más veces que aparece un término de búsqueda en un documento, mayor será la puntuación
  • idf: significa frecuencia inversa de documento - los resultados encontrados en frases más raras son más valorados que los encontrados en frases más comunes
  • coord: es el factor de coordinación - si hay varios términos en una consulta,más términos que coincidan, mayor será la puntuación
  • lengthNorm: los resultados encontrados en campos más pequeños son más valorados que los encontrados en campos muy grandes
  • index-time boostsi se ha configurado un peso (boost) para el documento concreto en el momento de indexación, la puntuación será mayor para dichos documentos.
  • query clause boostun usuario puede modificar el peso en el momento de realizar la consulta por lo que dicho peso también será tenido en cuenta a la hora del cálculo de la popularidad

Este último caso es el que nosotros vamos a explotar para ser capaces de cambiar el cálculo de la popularidad por defecto. La idea es que nosotros podamos aplicar un peso mayor a ciertos criterios para que la búsqueda se aproxime más a nuestras necesidades. Veamos algunos ejemplos de uso de esta funcionalidad:

  • Priorizar una serie de tipos de recursos por encima de otros
  • Priorizar la información almacenada en unos campos por encima de otros
  • Priorizar los contenidos más recientes por encima de los más antiguos

Priorizar por tipo de recursos:

&q=(content:"KEYWORDS" AND type:("producto"^500 OR "blog"^100 OR "containerpage"^50 OR *))

Priorizar por campos del contenido

&q=(Title_prop:"KEYWORDS"^20 OR Description_prop:"KEYWORDS"^10 OR content:"KEYWORDS")

 

De esta forma podremos dar un valor añadido al buscador de nuestro sitio web ofreciendo siempre los resultados más relevantes según nuestra necesidad por encima del resto de contenido de nuestro sitio.

 

 Solr, popularidad, buscador