[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]

Bloggers recientes

Cesar Capillas Mensajes: 110
Estrellas: 7
Fecha: 18/05/13
Gustavo Fernandez Mensajes: 44
Estrellas: 7
Fecha: 10/05/13
Patricia Yagüe Mensajes: 2
Estrellas: 0
Fecha: 2/04/12

Archivo

Tags

noBlogo - El blog de zylk.net

Entradas con etiqueta <em>solr</em>.

Último día de la Drupal CampSpain 2010

Último día, tras despertar he dedicado algo de tiempo a seleccionar las fotos a subir de la jornada de ayer y a editar un par de textos. Veía que llegaba la hora de la primera sesión así que recogí todo, hice la maleta para volver y salí hacia el Citilab, quería llegar temprano porque habíamos quedado un poco antes de las sesiones con Roger Carhuatocto para preparar la BOF sobre Drupal + Alfresco. Encontramos a Roger y decidimos hacer la BOF a las 11 de la mañana, es una pena haber perdido una sesión por hacer la BOF de Alfresco, pero la BOF nos parecía más interesante.

Tras planear la BOF, comenzó la sesión Why does Solr shine so bright and more on Apache Solr/Lucene, presentada por Nick Veenhof. Durante la sesión vimos que Solr se trata de un servidor de búsquedas que trabaja con Lucene y que el hecho de usarlo significa darle un respiro a las BBDD. Hemos visto que hay un módulo ApacheSolr para Drupal, aunque más tarde veríamos que hay muchísimos más, de integración con Views o con Ubercart... Como pequeña curiosidad Nick nos ha contado que el 50% de los accesos a páginas de drupal.org se realiza a través de resultados de Solr. A continuación vimos a Drupal y Solr en acción y distintas características: Tras una búsqueda muestra sugerencias, gestiona prioridades, recomienda más contenido (p.ej: Más artículos similares...), etc. También pudimos acceder a la configuración y aquí es posible conocer y modificar los campos o información de Drupal que indexa Solr. También cuenta con sistema de prioridades configurable, las prioridades se pueden definir en base a gran cantidad de parámetros: Fecha, imágenes, texto en h2 o en h3 que tiene un contenido... A través de este sistema de prioridades Solr da una puntuación a cada contenido indexado. Finalmente conocimos un poco del futuro de esto, sabiendo que Solr se integrará perfectamente con Drupal 7 y Views 3. Para implementar un servicio Solr sólo necesitaríamos el propio software, un contenedor de servlets, como puede ser Apache Tomcat y la máquina virtual de Java, por lo que podríamos implementarlo en la misma máquina donde tenemos Drupal y también en otra máquina, lo cual me parece una opción más optima.

Tras la charla se me acercó Siddharta Navarro, quién expuso ayer la sesión sobre Open Atrium, me dijo que le había gustado cómo twiteé su sesión (utilicé Twitter para tomar apuntes de cada una de las sesiones, de esta forma, podía tomar apuntes para mí mismo y a la vez lo podía compartir con todo el mundo) y me pidió permiso para poder utilizar esos tweets para futuras sesiónes, se lo agradecí y cómo no, le dije que utilizase esos tweets para lo que quisiera. Bajamos al Coffe Break y comenzamos la BOF sobre Alfresco en la sala de BOFs. Este BOF no contó con gran asistencia pero sirvió para resolver nuestras dudas y conocer mejor la implementación de la integración Drupal + Alfresco. El resultado, a parte de los conocimientos adquiridos, será que dentro de poco habrá un post sobre esta integración :)

Tras la BOF asistimos a la que sería la última sesión técnica de la DrupalCampSpain 2010 y me decidí por la sesión Drupal nice: diez módulos imprescindibles que desconoces de mano de Jorge López-Lago, siempre es interesante conocer el mundo de los módulos interesantes que giran en torno a Drupal. Los módulos presentados son módulos que ofrecen pequeñas funcionalidades que facilitan la administración del CMS. Los módulos que hemos visto han sido, entre otros: chgpwd (mueve la funcionalidad de cambiar la contraseña del usuario a una nueva página), ModuleInfo (Muestra información acerca de los módulos instalados desde la lista de módulos de Drupal), Administration Menu (Añade un menú superior de administrar el CMS), Masquerade (Permite que el administrador suplante a un usuario del sistema), Fieldset Helper (Mantiene el estado de un fieldset desplegable cuando lo replegamos, sin perder los datos de los campos), Mail Logger (Guarda en tablas separadas todos los mails que envía Drupal), Devel (entre otras cosas, permite ver las consultas SQL que realiza Drupal), Reroute Email (captura todos los emails salientes de Drupal y los redirige a una dirección de correo preestablecida), Session Limit (Limita el número de sesiones simultaneas que puede abrir un usuario en el sistema), Automated Logout (Cierra la sesión de un usuario tras un periodo de tiempo definido de inactividad), Kill File (Añade papelera de reciclaje, invisible para el usuario.), Hint (Añade un texto de ayuda a cada campo del formulario que desaparece tras hacer click en el mismo campo), Environment Indicator (Añade una banda de color a un lado de la página para distinguir el entorno facilmente, orientado a servidores de desarrollo, pruebas y producción, etc.), Add another (Al crear un nodo, nos da la opción de crear otro nodo igual), W3C Validator (Ofrece una interfaz para utilizar el validador de la W3C y validar todas las páginas del sitio) , Transliteration (Elimina o reemplaza los caracteres no ASCII que se añaden en el contenido), Override Node Options (Permite definir los permisos de varios campos de autoría y publicación del formulario de creación de nodos), Maxlength (Permite definir la longitud máxima de los campos de texto de un formulario) y Email Registration (Crea un usuario a partir de la dirección de correo eléctronico y le permite autenticarse con él).

Para finalizar este último día de Drupal Camp, se realizó la última sesión, la sesión de despedida. En ella se ha comentado de ha sido la mejor DrupalCampSpain que ha habido nunca, con 350 participantes :) Se ha agradecido su trabajo a los organizadores, voluntarios, ponentes, asistentes... Después se han sorteado varios libros, dos entradas para la PHP Conference de Barcelona y un iPod Nano entre los asistentes, a nosotros no nos ha tocado nada :(  Después se han sorteado 3 libros entre los voluntarios. Finalmente, nos hemos despedido en la sala y la organización nos ha invitado a comprar merchandishing de la Drupal Camp, para poder financiar toda el evento. Para convencernos, nos han contado la teroría del retorno en la inversión de las camisetas. Esta teoría dice que si compramos una camiseta de la Drupal Camp, algún día que estemos de vacaciones en el extranjero luciendo la camiseta, alguién podrá reconocerla, y esa persona se alegrará de ver a alguien de la comunidad Drupal y nos invitará a comer. Aún siendo improbable, es una teroía divertida e imaginativa :)

Al salir del Citilab hemos puesto rumbo al aeropuerto, parando en la estación de Sants para comer, y ya estamos de vuelta. Hemos venido con mucho más que lo que hemos llevado: haber conocido gente nueva, haber descubierto muchas facetas de Drupal que aún nos quedan por explorar, las experiencias y vivencias de esta Drupal Camp, el ejemplo de trabajo en equipo de la comunidad y un par de Elephpantitos que me he comprado ;)

Adaptando plugin solr web para liferay 5.2.3 SE

Hace un tiempo que escribí un artículo relacionado con solr y liferay. En aquel momento vimos que la idea de usar un servidor de indices externo podía ser interesante a la hora de disponer de un sistema de alta disponibilidad. También vimos que el plugin de liferay para solr funcionaba solamente para versiones específicas tanto del solr como del propio liferay. Existe una versión oficial del plugin para el solr 1.4 y liferay 5.2.0 que si se usa sobre la versión 5.2.3 del portal no funciona correctamente. Así que me he descargado las fuentes del plugin web y he realizado los siguientes cambios sobre el mismo para que funcione con la versión 5.2.3-SE (community) del portal y el servidor solr 1.4.1.

  • Añadida la constante, public static final String COMMAND_INDEX_ONLY = "INDEX_ONLY", en la clase utilidades. Parece que esta constante ha desparecido de la interfaz al pasar de la versión 5.1 a la 5.2 del portal. Supongo que ya no se enviarán mensajes por el bus con este comando, pero por si acaso he añadido la constante en el plugin.
  • Añadido un cast explicito para el método isIndexReadOnly().
  • Añadido un if not null de validación en el método de búsqueda if(sortField.getFieldName() != null ya que por alguna razón existen elementos en el array sorts con el getFieldName a null que hacen generan una excepción en tipo nullPointer a la hora de realizar las búsquedas.
  • Modificadas las dependencias y librería para que use las nuevas versiones empaquetadas en el solr 1.4.1 y sus dependencias existentes en el portal.

         portal-dependency-jars=\
            commons-codec.jar,\
            commons-httpclient.jar,\
            commons-io.jar,\
            slf4j-api.jar,\
            slf4j-log4j12.jar,\
            spring.jar


         y en el lib del plugin
           apache-solr-solrj-1.4.1.jar
           jcl-over-slf4j-1.5.5.jar

 

Con estos cambios el portal usa los indices almacenados en el servidor de solr y no apraecen trazas de error relacionadas con la indexación o la búsqueda. Hay que tener en cuenta que las pruebas que hemos realizado han sido pocas y que puede que aparezcan más fallos relacionados con la indexación. Dejo un link a la versión modificada el del plugin web de solr en este post.

Links de intrés relacionados con el tema:

SOLR web plugin for Liferay 5.2.3 SE and SOLR server 1.4

The original post (in spanish) is found here

Some time ago we wrote a post about SOLR and Liferay. In that moment, we saw quite interesting the idea of using an external server for the indices when dealing with high availability systems. We checked that the official version only worked for specific versions of SOLR and Liferay. There exists an official version of the web plugin for SOLR 1.4 and Liferay 5.2.0 , that fails when used with Liferay 5.2.3 SE. So, we made some minor changes on the web plugin source for Liferay 5.2.3 SE (Community) and SOLR 1.4.1. Some technical details are given here:

  • Added the constant, public static final String COMMAND_INDEX_ONLY = "INDEX_ONLY", in the utils class. It seems that this constant is not included in the interface from the 5.1 to 5.2 version of the portal. Maybe, some messages are not available with this command, but anyway the constant is added in the plugin.
  • Added an explicit cast for the method isIndexReadOnly().
  • Added a validation if not null in the search method if(sortField.getFieldName() != null
  • Modified the dependencies and the libs for using the new packed versions of SOLR 1.4.1, and the existing dependencies in the portal.

         portal-dependency-jars=\
            commons-codec.jar,\
            commons-httpclient.jar,\
            commons-io.jar,\
            slf4j-api.jar,\
            slf4j-log4j12.jar,\
            spring.jar


         y en el lib del plugin
           apache-solr-solrj-1.4.1.jar
           jcl-over-slf4j-1.5.5.jar
     

With these minor changes, the portal uses the SOLR server indices and no errors are logged related to indexing nor searching. It is important to remark that it is not fully tested. Here is a download link to the modified version of the web plugin.

Links and discussions related:

 

Solr en cluster para Liferay 6.0.5 CE

Siguiendo con el post relacionado con SOLR y Liferay 5.2.3, hemos seguido haciendo unas pruebas esta tarde relacionadas con la posibilidad de disponer de un cluster de SOLR y como usarlo de manera sencilla desde un cluster de Liferay. SOLR propone como arquitectura de cluster un sistema basado en un master de escritura y n nodos de lectura sincronizados. Por tanto no se trata de un sistema activo-activo, sino más bien de un sistema activo-pasivo. Claramente el trabajo principal de un servidor de indexación es ofrecer los resultados de las búsquedas y desde es punto de vista la arquitectura propuesta por SOLR tiene bastante sentido. La pregunta es en este caso, ¿cómo usamos desde Liferay esta arquitectura de forma sencilla?

Para poder hacer uso de esta arquitectura vamos a montar dos nodos de Liferay cada uno con su plugin solr-web desplegado, y vamos a configurar los contextos de spring de los módulos de solr-web para que hagan uso de los nodos replicados a la hora de hacer las búsquedas y del nodo maestro para realizar las indexaciones. Con esta arquitectura cada nodo de Liferay dispondrá de un nodo esclavo de SOLR que se encargará de realizar las búsquedas y existirá un único nodo maestro de SOLR en el que ambos nodos de Liferay escribirán, este nodo maestro se encargará de realizar las tareas de sincronizado y de enviar la información de sincronización a los nodos esclavos.

Para realizar esta configuración, desde el punto de vista de Liferay basta con modificar el archivo solr-spring.xml, de cada nodo de liferay para indicarle cual es el nodo de búsqueda y cual es el nodo de indexación:

<bean id="com.liferay.portal.search.solr.server.BasicAuthSolrServer" class="com.liferay.portal.search.solr.server.BasicAuthSolrServer">
        <constructor-arg type="java.lang.String" value="http://solr-master.zylk.net:8090/solr" />
</bean>


<bean id="com.liferay.portal.search.solr.server.BasicAuthSolrServerSearcher" class="com.liferay.portal.search.solr.server.BasicAuthSolrServer">
       <constructor-arg type="java.lang.String" value="http://solr-slave.zylk.net:8090/solr" />
</bean>

 


Más adelante nos gustaría investigar la posibilidad de realizar, búsquedas distribuidas e indexaciones distribuidas con Liferay y SOLR... pero eso será más adelante
 
Links de interés:
  * http://wiki.apache.org/solr/SolrReplication
  * http://wiki.apache.org/solr/CollectionDistribution
  * http://www.mail-archive.com/solr-user@lucene.apache.org/msg06081.html
  * http://wiki.apache.org/solr/DistributedSearch
  * http://wiki.apache.org/solr/WritingDistributedSearchComponents
 

Mostrando 4 resultados.