Introducción a Apache Solr. Parte 2: Consultando Solr

Apache Solr [1] es un marco de trabajo de motor de búsqueda escrito en Java y basado en la biblioteca de búsqueda Lucene [6]. En el artículo anterior, configuramos Apache Solr en Debian GNU / Linux 11, que se lanzará próximamente, iniciamos un único núcleo de datos, cargamos datos de ejemplo y demostramos cómo hacer una búsqueda básica dentro del conjunto de datos usando un simple consulta.

Este es un artículo de seguimiento al anterior. Cubriremos cómo refinar la consulta, formular criterios de búsqueda más complejos con diferentes parámetros y comprender los diferentes formularios web de la página de consulta de Apache Solr. Además, discutiremos cómo posprocesar el resultado de la búsqueda utilizando diferentes formatos de salida como XML, CSV y JSON.

Consultando Apache Solr

Apache Solr está diseñado como una aplicación web y un servicio que se ejecuta en segundo plano. El resultado es que cualquier aplicación cliente puede comunicarse con Solr enviándole consultas (el tema central de este artículo), manipulando el núcleo del documento agregando, actualizando y eliminando datos indexados y optimizando los datos centrales. Hay dos opciones: a través del panel de control / interfaz web o el uso de una API enviando la solicitud correspondiente.

Es común utilizar la primera opción con fines de prueba y no para el acceso regular. La siguiente figura muestra el panel de la interfaz de usuario de administración de Apache Solr con los diferentes formularios de consulta en el navegador web Firefox.

Primero, en el menú debajo del campo de selección principal, elija la entrada de menú “Consulta”. A continuación, el tablero mostrará varios campos de entrada de la siguiente manera:

  • Administrador de solicitudes (qt):
    defina qué tipo de solicitud desea enviar a Solr. Puede elegir entre los manejadores de solicitudes predeterminados “/ select” (consultar datos indexados), “/ actualizar” (actualizar datos indexados) y “/ eliminar” (eliminar los datos indexados especificados), o uno autodefinido.
  • Evento de consulta (q):
    defina qué nombres de campo y valores se seleccionarán.
  • Filtrar consultas (fq):
    restringe el superconjunto de documentos que se pueden devolver sin afectar la puntuación del documento.
  • Orden de clasificación (clasificación):
    defina el orden de clasificación de los resultados de la consulta en ascendente o descendente
  • Ventana de salida (inicio y filas):
    limita la salida a los elementos especificados
  • Lista de campos (fl):
    limita la información incluida en la respuesta de una consulta a una lista de campos especificada.
  • Formato de salida (wt):
    Defina el formato de salida deseado. El valor predeterminado es JSON.

Al hacer clic en el botón Ejecutar consulta, se ejecuta la solicitud deseada. Para ver ejemplos prácticos, eche un vistazo a continuación.

Como segunda opción , puede enviar una solicitud mediante una API. Esta es una solicitud HTTP que cualquier aplicación puede enviar a Apache Solr. Solr procesa la solicitud y devuelve una respuesta. Un caso especial de esto es la conexión a Apache Solr a través de la API de Java. Esto se ha subcontratado a un proyecto independiente llamado SolrJ [7]: una API de Java sin necesidad de una conexión HTTP.

Sintaxis de la consulta

La sintaxis de la consulta se describe mejor en [3] y [5]. Los diferentes nombres de los parámetros se corresponden directamente con los nombres de los campos de entrada en los formularios explicados anteriormente. La siguiente tabla los enumera, además de ejemplos prácticos.

Índice de parámetros de consulta

Parámetro Descripción Ejemplo
q El principal parámetro de consulta de Apache Solr: los nombres y valores de los campos. Sus puntuaciones de similitud documentan los términos de este parámetro. Id: 5
coches: * adilla *
*: X5
fq Restringir el conjunto de resultados a los documentos de superconjunto que coinciden con el filtro, por ejemplo, definido mediante el analizador de consultas de rango de funciones modelo de
identificación, modelo
comienzo Compensaciones para los resultados de la página (comienzo). El valor predeterminado de este parámetro es 0. 5
filas Compensaciones para los resultados de la página (final). El valor de este parámetro es 10 por defecto. 15
clasificar Especifica la lista de campos separados por comas, según la cual se ordenarán los resultados de la consulta. modelo asc
Florida Especifica la lista de campos que se devolverán para todos los documentos del conjunto de resultados. modelo de
identificación, modelo
peso Este parámetro representa el tipo de escritor de respuesta que queríamos ver el resultado. El valor de esto es JSON por defecto. json
xml

Las búsquedas se realizan a través de una solicitud HTTP GET con la cadena de consulta en el parámetro q. Los ejemplos siguientes aclararán cómo funciona esto. Se utiliza curl para enviar la consulta a Solr que está instalado localmente.

  • Recupere todos los conjuntos de datos de los coches principales
    curl http://localhost:8983/solr/cars/query?q=*:*
  • Recupere todos los conjuntos de datos de los automóviles principales que tienen una identificación de 5
    curl http://localhost:8983/solr/cars/query?q=id:5
  • Recupere el modelo de campo de todos los conjuntos de datos de los coches principales
    Opción 1 (con &amp escapado):

    curl http://localhost:8983/solr/cars/query?q=id:*\&ampfl=model

    Opción 2 (consulta en ticks individuales):

    curl ‘http://localhost:8983/solr/cars/query?q=id:*&ampfl=model’
  • Recupere todos los conjuntos de datos de los automóviles principales ordenados por precio en orden descendente y genere los campos marca, modelo y precio, solo (versión en tics individuales):
    curl http://localhost:8983/solr/cars/query -d
      q=*:*&amp
      sort=price desc&amp
      fl=make,model,price ‘
  • Recupere los primeros cinco conjuntos de datos de los automóviles principales ordenados por precio en orden descendente y genere los campos marca, modelo y precio, solo (versión en ticks individuales):
    curl http://localhost:8983/solr/cars/query -d
      q=*:*&amp
      rows=5&amp
      sort=price desc&amp
      fl=make,model,price ‘
  • Recupere los primeros cinco conjuntos de datos de los automóviles principales ordenados por precio en orden descendente y genere los campos marca, modelo y precio más su puntaje de relevancia, solo (versión en tics individuales):
    curl http://localhost:8983/solr/cars/query -d
      q=*:*&amp
      rows=5&amp
      sort=price desc&amp
      fl=make,model,price,score ‘
  • Devuelve todos los campos almacenados, así como la puntuación de relevancia:
    curl http://localhost:8983/solr/cars/query -d
      q=*:*&amp
      fl=*,score ‘

Además, puede definir su propio controlador de solicitudes para enviar los parámetros de solicitud opcionales al analizador de consultas para controlar qué información se devuelve.

Analizadores de consultas

Apache Solr utiliza un analizador de consultas, un componente que traduce su cadena de búsqueda en instrucciones específicas para el motor de búsqueda. Un analizador de consultas se interpone entre usted y el documento que está buscando.

Solr viene con una variedad de tipos de analizadores que difieren en la forma en que se maneja una consulta enviada. El analizador de consultas estándar funciona bien para consultas estructuradas, pero es menos tolerante con los errores de sintaxis. Al mismo tiempo, tanto el Analizador de consultas DisMax como el DisMax extendido están optimizados para consultas similares al lenguaje natural. Están diseñados para procesar frases simples ingresadas por los usuarios y para buscar términos individuales en varios campos usando diferentes ponderaciones.

Además, Solr también ofrece las llamadas consultas de función que permiten combinar una función con una consulta para generar una puntuación de relevancia específica. Estos analizadores se denominan Analizador de consultas de funciones y Analizador de consultas de rango de funciones. El siguiente ejemplo muestra el último para seleccionar todos los conjuntos de datos para “bmw” (almacenados en el campo de datos make) con los modelos del 318 al 323:

curl http://localhost:8983/solr/cars/query -d
  q=make:bmw&amp
  fq=model:[318 TO 323] ‘

Post-procesamiento de resultados

Enviar consultas a Apache Solr es una parte, pero postprocesar el resultado de la búsqueda de la otra. Primero, puede elegir entre diferentes formatos de respuesta, desde JSON a XML, CSV y un formato Ruby simplificado. Simplemente especifique el parámetro wt correspondiente en una consulta. El siguiente ejemplo de código demuestra esto para recuperar el conjunto de datos en formato CSV para todos los elementos que usan curl con &amp escapado:

curl http://localhost:8983/solr/cars/query?q=id:5\&ampwt=csv

La salida es una lista separada por comas de la siguiente manera:

Para recibir el resultado como datos XML, pero los dos campos de salida hacen y modelan, ejecute la siguiente consulta:

curl http://localhost:8983/solr/cars/query?q=*:*\&ampfl=make,model\&ampwt=xml

La salida es diferente y contiene tanto el encabezado de respuesta como la respuesta real:

Wget simplemente imprime los datos recibidos en stdout. Esto le permite posprocesar la respuesta utilizando herramientas de línea de comandos estándar. Para enumerar algunos, contiene jq [9] para JSON, xsltproc, xidel, xmlstarlet [10] para XML y csvkit [11] para formato CSV.

Conclusión

Este artículo muestra diferentes formas de enviar consultas a Apache Solr y explica cómo procesar el resultado de la búsqueda. En la siguiente parte, aprenderá a usar Apache Solr para buscar en PostgreSQL, un sistema de administración de bases de datos relacionales.

Sobre los autores

Jacqui Kabeta es una ambientalista, ávida investigadora, capacitadora y mentora. En varios países africanos, ha trabajado en la industria de las tecnologías de la información y en entornos de ONG.

Frank Hofmann es un desarrollador de TI, formador y autor y prefiere trabajar desde Berlín, Ginebra y Ciudad del Cabo. Coautor del Libro de administración de paquetes de Debian disponible en dpmb.org

Enlaces y referencias

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux