Empecemos con una definición de la página del proyecto Apache SOLR (traducida rápidamente)
SOLR es una plataforma de búsqueda de código abierto, evolución del proyecto Apache Lucene. Sus principales características incluyen la búsqueda de texto completo, búsqueda facetada, indexación en casi- tiempo real, la agrupación dinámica, la integración de bases de datos, documentos ricos (por ejemplo, Word, PDF) y la búsqueda geoespacial. SOLR es fiable, escalable y tolerante a fallos, proporcionando indexación distribuida, replicación y consultas en configuraciones con equilibrio de carga, failover automatizado y recuperación, configuración centralizada etc..
SOLR está presente en las características de búsqueda y navegación características de muchas de las mayores webs existentes (Resumiendo: es una evolución de Lucene y es extremadamente potente)
SOLR y Dspace
SOLR se usa en Dspace para lograr dos funcionalidades: estadísticas y búsquedas. Como nada es perfecto, el uso de SOLR se mezcla con antiguas capas de código pre-existente Lucene. Así tenemos que en Dspace version 1.7, 1.8 y 3, conviven las estadísticas del «sistema» a partir del procesado de los logs del sistema Y las estadísticas de uso y descarga, obtenidas a partir /solr/statistics. En el -ambito de la búsqueda, la situación es que con Discovery activado, la búsqueda se hará sobre el motor SOLR y sus índices, pero la navegación por índices se hace sobre Lucene (desconcierto garantizado). Está planificado simplificar esta situación en la versión 4, eliminando Lucene… veremos..
Configurando las búsquedas SOLR
Hoy veremos el segundo bloque funcional, las búsquedas. La buena noticia es que SOLR se configura mediante ficheros XML, la mala es que esta configuración es sustancialmente más compleja que la configuración Lucene. Rompamos una lanza: SOLR tiene una potencia espectacular aunque resulte difícil de comprender su funcionamiento. Pero… ¿quien entiende el comportamiento de Google? ¿y quién lo usa? ¿a que no podríamos vivir sin él? Pues comprender el funcionamiento de SOLR es complejo y su potencial es enorme, aunque quizá podamos conformarnos con realizar una serie de adaptaciones.
Como ejemplo de lo anterior, y ya que teníamos pendiente hablar sobre las configuraciones de diacríticos, pues vamos a comentar como lograr lo mismo que hacíamos en Lucene en este post.
Básicamente el proceso de construcción del índice Solr es la aplicación de una serie de transformaciones a nuestros campos (fields). Las transformaciones son del mimo tipo que las que aplicábamos en Lucene. En general se mantienen los nombres de las clases transformadoras y se les añade el prefijo «solr», refiriéndose así a las clases java del paquete org.apache.solr.analysis.
Hay que especificarlas relacionándolas con el tipo de campo que queramos transformar, y esta relación se especifica dentro del fichero «principal» de configuración ../solr/search/conf/schema.xml.
En este fichero tenemos que localizar el <fieldType name=»text» ……> que es el que corresponde con los campos de tipo textual. Hay datos de múltiples tipos: numéricos, string, numéricos con ordenación textual, fechas, booleanos, hasta 39 diferentes contamos en schema.xml
pues bien dentro de esa etiqueta fielType, localizar
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt">
y cambiarla, añadiendo..
<filter class="solr.ASCIIFoldingFilterFactory"></filter> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt">
Lo ponemos «antes» del Porter-Stemmer por las mismas razones que explicamos cuando configuramos el índice Lucene. Ya de paso, y contestando una pregunta que nos hicísteis, aprovechamos para revisar en ese mismo fichero el operador lógico usado en las queries:
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> <solrQueryParser defaultOperator="AND"/>
Ahora nos queda reindexar SOLR. Nos parece que es más adecuado proceder a una reconstrucción completa del índice y por eso, la opción de borrado del índice.
..\bin\dspace update-discovery-index -b
Y ya debiera estar. Suerte.
GRACIAS!!!
Muy buen post. Aún no lo he probado en la instalación de DSpace, pero lo haré durante el día. Les comento los resultados ;)
gracias nuevamente
Hice los cambios que aparecen en el post, pero sigo teniendo problemas. Antes, si buscaba por ‘gestión’ o ‘gestion’ me arrojaba cero resultados. Ahora si busco por ‘gestion’ me arroja resultados, pero si busco por ‘gestión’ me dice «Su petición «gestión» produjo 0 resultados».
Sigue cambiando gestión por gestión
¿Alguna idea?
saludos
buenas Claudio, el primer paso está, ya que el índice SOLR parece que está con entradas…
ya que está enviando una cadena «gestión» y el sistema le entiende gestión, el problema que comenta, «normalmente» (y es difícil definir qué es «normal»), suele estar asociado a una configuración incorrecta del TOMCAT. Debe asegurarse que todos los puertos usados estén configurados con UTF-8. La documentación de DSpace creo que hace referencia únicamente al puerto 8080 u 8888 (depende de la instalación), pero yo en su situación probaría a poner URIEncoding=»UTF-8″ en todos los tags del tipo <Connector port=»xxxx» …> que tenga en el fichero de configuración del tomcat «server.xml» (y no se olvide de parar tomcat y limpiar el caché antes de rearrancar).
Suerte
Ahora sí funciona correctamente! Sois unos genios.
gracias nuevamente
buenas..
no sabia exactamente donde hacer esta pregunta.. pero quisiera saber como puedo traducir a español los reportes de estadisticas en Dspace 3.1 JSPUI..
por ahi lei que editando el archivo:
[dspace_src]/dspace-api/src/main/java/org/dspace/app/statistics/HTMLReport
pero primero ahi no aparece todo lo que hay que traducir y segundo al recompilar no me aparece traducido..
cualquier informacion de ayuda, les agradezco de antemano..