Share:
Subscribe and receive the latest news directly in your email.

R&D&IBusinessNew technologies

Getting started with Apache Solr 5.4.1

1. Introduction

Apache Solr is a powerful open-source search engine that indexes a wide variety of document types, including XML, JSON, CSV, Word, and PDF. Its features include full-text search, faceted search, result highlighting, dynamic clustering, and database integration.

One of the main advantages of Solr is that searches can be performed using simple REST requests, so we can make a query through a URL like:

http://localhost:8983/solr/gettingstarted/select?q=apellidos%3Alopez&sort=apellidos+desc&start=40&rows=20&wt=xml&indent=true&defType=dismax

Los resultados pueden obtenerse en forma de un documento estructurado como XML, JSON ó CSV. Pero también en otros diferentes formatos como un array de PHP.

Entre los usuarios de Apache Solr se encuentran grandes empresas como Apple, eBay, Cisco.

Los más populares gestores de contenido como Drupal, WordPress y Liferay tienen ya módulos o plugins de integración con Solr.

2. Instalación

Desde la versión 5 (disponible desde el 20 de Febrero de 2015) ya no se distribuye como un archivo war, que podía desplegarse en cualquier servidor de aplicaciones. A partir de esta versión Solr viene integrado en un servidor Jetty con una nueva interfaz de administración. Podemos descargarnos la última versión desde http://lucene.apache.org/solr/mirrors-solr-latest-redir.html desde donde se nos redirigirá a la página de descarga de la última versión, la 5.4.1 liberada el 23 de Enero.

Para ejecutar Solr 5.4.1 necesitará una versión de Java 7 o superior, evitando usar la construcción GA 147 y las actualizaciones u40, u45 y u51 de Oracle u OpenJDK. Para más información sobre ésta cuestión puede visitar Java Bugs in various JVMs affecting Lucene / Solr. Se recomienda el uso de la versión 8 que proporciona un mejor rendimiento.

Una vez realizada la descarga, descomprima el fichero en una carpeta de su elección.

3. Arranque

Para arrancar Solr utilizamos el script solr which is located in the bin folder. There is a version of this script for Linux/Unix/OSX operating systems and another for Windows. In either case, simply run

$ bin/solr start

Once the server is up and running, we can access the Solr graphical administration interface at http://localhost:8983/solr/

To see all the script options, we can run:

$ bin/solr -help

and for the start option:

$ bin/solr start –help

We can't finish discussing Solr startup without mentioning SolrCloud. SolrCloud is the name given to a series of features added in version 4 to simplify the management of a Solr server cluster for scalability, fault tolerance, and high availability. To access these features, we must start the Solr server in SolrCloud mode.

$ bin/solr start -cloud

A detailed description of SolrCloud is beyond the scope of this article.

4. Indexed

Once the Solr server is running, the first thing we need to do is create a core, the structure where our index will be stored. To do this, we execute:

$ bin/solr create -c <nombre_del_core>

As with the start option, we can execute:

$ bin/solr create -help

to get help on the available options for creating cores.

If at any point we wish to delete a core podemos hacerlo con el comando delete:

$ bin/solr delete -c <nombre_del_core>

En la carpeta <solr_home>/server/solr se creará la carpeta de nuestro core que contendrá:

  • core.properties: define las propiedades del core como su nombre, la localización del archivo schema.xml y otros parámetros
  • conf/: contiene los ficheros de configuración. Los más importantes:
  • solrconfig.xml: contiene parámetros para definir el comportamiento del core a alt nivel, como una localización diferente para la carpeta data
  • schema.xml: define la estructura de los documentos a indexar. En este archivo se definen un documento como una serie de campos, que han de ser definidos a través de varios parámetros incluyendo su tipo. Al crear un core no encontraremos este fichero, sino uno llamado managed-schema que puede servirnos como punto de partida para crear nuestro propio schema.xml. También es posible trabajar en modo “schemaless», de esta manera no hará falta editar el schema manualmente, sino que éste se irá creando a medida que vayamos indexando documentos. Para que nuestro core trabaje de esta forma es necesario configurar adecuadamente el fichero solrconfig.xml.
  • data/: esta carpeta contiene los ficheros de bajo nivel productos del proceso de indexado

Una vez creado el core We need to add the documents we want to index.

Although there are several methods we can use to accomplish this task, including the use of SolrJ, a Java API, here we will look at the use of post a simple command-line tool available only for Unix shells. However post It performs its function through a Java program, SimplePostTool, which can be invoked from Windows systems. This utility is included in the post.jar file, so we can run it from the Solr installation directory. We can find the post.jar file in the /example/exampledocs folder. We can move it, for example, to the bin folder and run it from

$ java -jar bin/post.jar -h

If we work on Linux/Unix/OsX, we can do the same thing for the same purpose.

$ bin/post -h

And, for example, to index in the core name products all PDF documents found in the folder catalog We do:

$ bin/post -c productos catalogo/*.pdf

5. Search

When we make a request to a Solr server, it is initially processed by a request handler. In the case of search requests, request handler will send the request to a query parser, que es quien finalmente interpreta los términos y parámetros para el proceso de búsqueda. Cada query parser cuenta con una sintaxis propia si bien hay una serie de parámetros comunes a todos estos. Tres de estos parseadores son el “standard”, DisMax y Extended DisMax (eDisMax). El primero ya posee la posibilidad de realizar búsquedas precisas, mientras que DisMax proporciona además una gran tolerancia a errores en la sintaxis y eDisMax permite el uso de la sintaxis completa de Lucerne (el motor de búsqueda que corre bajo Solr).

Una vez realizada la búsqueda, un reponse writer se encarga del formato final de los resultados. Entre los más utilizados están el XML Response Writer y el JSON Response Writer.

En el siguiente esquema se resume el proceso de búsqueda:

flujo

Los parámetros más utilizados y que son válidos para los tres query parsers son:

  • defType: define el query parser a utilizar, por ejemplo defType=dismax. Si no indicamos este parámetro Solr utilizará el parser standard (defType=lucene)
  • sort: ordena el resultado de la búsqueda en orden ascendente o descendente atendiendo a la puntuación o a cualquier otra característica que se indique. Por ejemplo: ordenar los resultados por el campo precio en orden descendente: sort=price+des
  • start: indica el número de registro a partir del cual se muestran los resultados (0 por defecto). Podemos utilizar este parámetro junto con el parámetro rows para paginación.
  • rows: number of results to display. The default value is 10
  • fq: This parameter filters the search results. This can be useful for speeding up complex searches, as they are cached regardless of the filters applied. We can specify multiple parameters. fq In a single query: show products with prices between 10 and 20 that are in stock, for example

fq=price:[10 to 20]&fq=stock:1

We can also perform complex queries using the Boolean operators + and -. Thus, the previous query would become:

fq=+price:[10 to 20] +stock:1

or assuming that the stock field can only have the values ​​0 and 1:

fq=+price:[10 to 20] -stock:0

Note that the first example will be cached as two separate filters, while subsequent examples will be cached as a single filter. If the parameters price and stock they are usually used together in a search, so it will be preferable to perform the query to our index with a single parameter. fq using the format of the second example.

  • debug: This is a parameter that can be useful during our development. The possible values ​​are:
  • query: to obtain information only about the query
  • timing: information about the time it takes for the query to be processed
  • Results: Information about the results score
  • all: all available information about the query
  • wt: defines the response writer a utilizar para mostrar los resultados. Algunos de los valores posibles son xml, csv, json y php. Este último obtiene los resutlados en forma de un array de PHP. Podríamos utilizar por ejemplo el siguiente código:

$code = file_get_contents(‘http://localhost:8983/solr/productos/select?q=nombre:iPod&wt=php’);

eval(«$result = » . $code . «;»);

print_r($result);

 

6. Estado y parada del servidor

Podemos obtener información básica (en formato JSON) sobre nuestro servidor Solr con el comando status:

$ bin/solr status

Para detener el servidor Solr ejecutamos el comando stop. Debemos indicar el puerto con la opción –p.

$ bin/solr stop –p <puerto>

También podemos detener todas las instancias en ejecución con la opción –all.

$ bin/solr stop -all

Tags:
gestión de documentosmotor de búsquedaSolr

Other news