Introducción a Apache Solr. Parte 2 Consulta Solr

Introducción a Apache Solr. Parte 2 Consulta Solr
Apache Solr [1] es un marco de motor de búsqueda escrito en Java y basado en la biblioteca de búsqueda de Lucene [6]. En el artículo anterior, configuramos Apache Solr en el Debian GNU/Linux 11 de Debian que pronto será lanzado, iniciamos un solo núcleo de datos, cargó datos de ejemplo y demostramos cómo hacer una búsqueda básica dentro del conjunto de datos utilizando un simple consulta.

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

Consulta 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 enviando consultas (el enfoque de este artículo), manipulando el núcleo del documento agregando, actualizando y eliminando datos indexados, y optimizando los datos principales. Hay dos opciones: a través de la interfaz del tablero/web o utilizando una API enviando una solicitud correspondiente.

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

Primero, en el menú en el campo de selección de núcleo, elija la entrada de menú "Consulta". A continuación, el tablero mostrará varios campos de entrada de la siguiente manera:

  • Handler de solicitud (QT):
    Defina qué tipo de solicitud le gustaría enviar a Solr. Puede elegir entre los controladores de solicitud predeterminados "/Select" (datos indexados de consulta), "/actualizar" (actualizar datos indexados) y "/eliminar" (eliminar los datos indexados especificados) o uno autodefinado autodefinado.
  • Evento de consulta (Q):
    Definir qué nombres y valores de campo se seleccionarán.
  • Consultas de filtro (FQ):
    Restringir el superconjunto de documentos que se pueden devolver sin afectar la puntuación del documento.
  • Orden de clasificación (clasificación):
    Definir el orden de clasificación de los resultados de la consulta a ascender o descender
  • Ventana de salida (inicio y filas):
    Limite la salida a los elementos especificados
  • Lista de campo (FL):
    Limita la información incluida en una respuesta de consulta a una lista específica de campos.
  • Formato de salida (WT):
    Defina el formato de salida deseado. El valor predeterminado es JSON.

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

Como el segunda opción, Puede enviar una solicitud usando 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 se conecta a Apache Solr a través de Java API. Esto se ha subcontratado a un proyecto separado llamado Solrj [7] - una API Java sin requerir una conexión HTTP.

Sintaxis de consulta

La sintaxis de la consulta se describe mejor en [3] y [5]. Los diferentes nombres de 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 parámetro de consulta principal de Apache Solr: los nombres y valores de campo. Su similitud puntúa el documento de los términos en este parámetro. ID: 5
COCHES:*Adilla*
*: X5
FQ Restringir el resultado establecido en los documentos superset que coinciden con el filtro, por ejemplo, definido a través del analizador de consulta de rango de funciones modelo
ID, modelo
comenzar Offsets para los resultados de la página (Begin). El valor predeterminado de este parámetro es 0. 5
hilera Offsets 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, en función de los cuales los resultados de la consulta deben ordenarse modelo ASC
Florida Especifica la lista de los campos para devolver todos los documentos en el conjunto de resultados modelo
ID, modelo
WT 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 HTTP Get Solicitud con la cadena de consulta en el parámetro Q. Los ejemplos a continuación aclararán cómo funciona. En uso está curl para enviar la consulta a Solr que está instalada localmente.

  • Recuperar todos los conjuntos de datos de los autos principales
    curl http: // localhost: 8983/solr/cars/consulta?Q =*:*
  • Recupere todos los conjuntos de datos de los autos principales que tienen una identificación de 5
    curl http: // localhost: 8983/solr/cars/consulta?Q = ID: 5
  • Recupere el modelo de campo de todos los conjuntos de datos de los autos principales
    Opción 1 (con escapado y):
    curl http: // localhost: 8983/solr/cars/consulta?q = id:*\ & fl = modelo

    Opción 2 (consulta en marcas individuales):

    curl 'http: // localhost: 8983/solr/cars/consulta?q = id:*& fl = modelo '
  • Recupere todos los conjuntos de datos de los autos centrales ordenados por precio en orden descendente, y emitir los campos fabrican, modelo y precio, solo (versión en garrapatas individuales):
    curl http: // localhost: 8983/solr/cars/consulta -d '
    q =*:*&
    sort = Price Desc &
    fl = hacer, modelo, precio '
  • Recupere los primeros cinco conjuntos de datos de los autos centrales ordenados por precio en orden descendente, y genere los campos que fabrican, modelo y precio, solo (versión en garrapatas individuales):
    curl http: // localhost: 8983/solr/cars/consulta -d '
    q =*:*&
    filas = 5 y
    sort = Price Desc &
    fl = hacer, modelo, precio '
  • Recupere los primeros cinco conjuntos de datos de los autos centrales ordenados por precio en orden descendente, y envíe los campos que realizan, modelo y precio más su puntaje de relevancia, solo (versión en garrapatas individuales):
    curl http: // localhost: 8983/solr/cars/consulta -d '
    q =*:*&
    filas = 5 y
    sort = Price Desc &
    fl = hacer, modelo, precio, puntaje '
  • Devolver todos los campos almacenados, así como el puntaje de relevancia:
    curl http: // localhost: 8983/solr/cars/consulta -d '
    q =*:*&
    fl =*, puntaje '

Además, puede definir su propio controlador de solicitud 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 supuesto 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 analizador 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 a los errores de sintaxis. Al mismo tiempo, tanto el analizador de consultas Dismax y Exmax se optimizan para consultas similares a un lenguaje natural. Están diseñados para procesar frases simples ingresadas por los usuarios y buscar términos individuales en varios campos utilizando diferentes ponderaciones.

Además, Solr también ofrece consultas de funciones llamadas que permiten combinar una función con una consulta para generar una puntuación de relevancia específica. Estos analizadores se denominan análisis de consultas de funciones y de consulta de rango de funciones. El siguiente ejemplo muestra el último para elegir todos los conjuntos de datos para "BMW" (almacenado en la marca del campo de datos) con los modelos de 318 a 323:

curl http: // localhost: 8983/solr/cars/consulta -d '
Q = Make: BMW &
FQ = Modelo: [318 a 323] '

Postprocesamiento de resultados

Enviar consultas a Apache Solr es una parte, pero posterior al procesamiento del resultado de la búsqueda del otro. Primero, puede elegir entre diferentes formatos de respuesta: desde JSON hasta XML, CSV y un formato de rubí simplificado. Simplemente especifique el parámetro WT correspondiente en una consulta. El ejemplo de código a continuación demuestra esto para recuperar el conjunto de datos en formato CSV para todos los elementos usando curl con escapado y:

curl http: // localhost: 8983/solr/cars/consulta?q = id: 5 \ & wt = 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 fabrican y modelan, solo ejecutar la siguiente consulta:

curl http: // localhost: 8983/solr/cars/consulta?q =*:*\ & fl = make, model \ & wt = 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 procesar postprocese la respuesta utilizando herramientas de línea de comandos estándar. Para enumerar algunos, esto contiene JQ [9] para JSON, XSLTPROC, XIDEL, XMLSTARLET [10] para XML y CSVKIT [11] para el 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á cómo usar Apache Solr para buscar en PostgreSQL, un sistema de gestión de bases de datos relacionales.

Sobre los autores

Jacqui Kabeta es un ambientalista, investigador ágil, entrenador y mentor. En varios países africanos, ha trabajado en los entornos de la industria de TI y las ONG.

Frank Hofmann es un desarrollador de TI, entrenador y autor y prefiere trabajar desde Berlín, Ginebra y Ciudad del Cabo. Coautor del libro de gestión de paquetes de Debian disponible en DPMB.organizar

Enlaces y referencias

  • [1] Apache Solr, https: // Lucene.apache.org/solr/
  • [2] Frank Hofmann y Jacqui Kabeta: Introducción a Apache Solr. Parte 1, http: // Linuxhint.comunicarse
  • [3] Yonik Seelay: sintaxis de consulta solr, http: // yonik.com/solr/consulty-syntax/
  • [4] Yonik Seelay: Tutorial Solr, http: // yonik.com/solr-tutorial/
  • [5] Apache Solr: consulta de datos, tutorialSpoint, https: // www.punto de tutorial.com/apache_solr/apache_solr_querying_data.htm
  • [6] Lucene, https: // Lucene.apache.org/
  • [7] Solrj, https: // Lucene.apache.org/solr/guía/8_8/usando-solrj.html
  • [8] curl, https: // curl.SE/
  • [9] JQ, https: // github.com/stedolan/jq
  • [10] xmlstarlet, http: // xmlstar.Fuente de la fuente.neto/
  • [11] csvkit, https: // csvkit.readthedocs.io/en/Último/