MEDIR TIEMPO DE BÚSQUEDAS

cancel
Showing results for 
Search instead for 
Did you mean: 
felipecc10
Member II

MEDIR TIEMPO DE BÚSQUEDAS

Hola Amigos del Foro!

Les cuento que estoy interesado en crear un contador para determinar cuanto tarda el motor de búsquedas de Alfresco (que hasta donde tengo entendido se llama Lucene) en encontrar algo que se solicite.

Sería de gran ayuda para mí si me pueden guiar en algo ya que soy nuevo en Alfresco y aprendo cada día de sus comentarios.

Saludos Cordiales para todos =)
22 Replies
baskeyfield
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Buenas,

Alfresco utiliza el servicio de búsquedas (SearchService) para lanzar consultas, ya sean utilizando lucene u otro lenguaje. Este es el .java de dicho servicio:

http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/search/SearchService....

Los métodos que a ti te interesan son los "query". Para empezar, yo comenzaría logeando esos métodos, para ver cuales son llamados cuando se ejecuta una búsqueda. El siguiente paso es medir cuanto tarda en ejecutarse ese método, bien calculándolo antes de llamarlo, o bien dentro del mismo método restando el tiempo desde que entra hasta que sale de él:

http://electrosystemss.blogspot.com/2008/04/medir-tiempo-de-ejecucin-en-java.html

Cuando tengas esto, y consigas ver el tiempo por consola, el ultimo paso será mostrar eso en el cliente web, para ello tendrás que modificar los .jsp de la vista, pero para eso aun te falta.

Cuéntanos tus avances.

Saludos.
felipecc10
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Hola Baskeyfield:

Te cuento que me he informado con lo que me dices respecto a lo de searchservice (no tenía idea como funcionaba) y econtré algo que me parece interesante y es en el siguiente directorio C:\Alfresco\tomcat\webapps\alfresco\jsp\parts\titlebar donde en la parte baja de ese documento existe una Search Area descrita en el siguiente código:

<%– Search area –%>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td><img src="<%=request.getContextPath()%>/images/parts/searchbar_begin.gif" width="6" height="31" alt=""/></td>
<td style="width:100%; background-image: url(<%=request.getContextPath()%>/images/parts/searchbar_bg.gif);">
<r:simpleSearch id="search" actionListener="#{BrowseBean.search}" />
</td>
<td><img src="<%=request.getContextPath()%>/images/parts/searchbar_end.gif" width="6" height="31" alt=""/></td>
</tr>
</table>
</td>
</tr>
</table>



Entonces creo que es probable que en la función BrowseBean.search es donde se realiza la búsqueda y quizás ahí es donde podría implementar el timer, pero nose como es que podría ver la ejecución de dicho codigo (el timer) en "la consola".

Me gustaría oir cual es tu opinión.

Saludos Cordiales y agradezco nuevamente tu ayuda!


Un abrazo
baskeyfield
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Buenas,

La clase java que comentas es esta:

http://dev.alfresco.com/resource/docs/java/web-client/org/alfresco/web/bean/BrowseBean.html

Me parece correcto lo de poner el timer ahí, solo que para la búsqueda avanzada tendrás que poner seguramente otro. Para loggear una clase debes poner en el fichero webapps/alfresco/webinf/classes/log4j.properties la ruta de la clase a nivel debug:

log4j.logger.org.alfresco.web.bean.BrowseBean=debug

Y desde el java BrowseBean usar:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static final Log logger = LogFactory.getLog("miClase");

logger.debug("Escribe esto en la consola");


Asegurate que algunas sentencias no estén ya en el java, como pueden ser los import y la declaración del "logger", si es así solo tendrás que poner lo de logger.debug("…");

Saludos.
felipecc10
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Hola!

Te cuento que tengo un par de dudas. La idea de logear el browse bean es para analizar en el momento que se ejecuta? de ser así como es que veo esto.

Por otro lado te cuento que mi versión de alfresco es la 3.2r y estoy en la ruta que mencionaste …\webapps\alfresco\WEB-INF\classes\log4j, pero no logro entender muy bien como ejecutar lo que me dices….y de acuerdo a todo esto donde sería que tengo que integrar el timer en el código de Alfresco….te hago estas consultas ya que tengo que tener solucionado este problema antes del viernes y la verdad estoy un poco preocupado ya que soy un novato en Alfresco. Nosé si sea así, pero lo que tu me dices es que copie las lineas que describes aquí y las pegué en ese archivo log4j? y de ser así no entiendo eso que dices del "java BrowseBean" y usar las lineas que me dices eso nosé donde está y por último el logger.debug("Escribe esto en la consola"); a que te refieres con "Escribe esto en la consola" ¿ ?

No importa aun que no integre el timer en el cliente mientras que si se me arroje el resultado en alguna parte.


Agradezco tu ayuda en el alma
baskeyfield
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Hola Felipe,

En el fichero webapps/alfresco/webinf/classes/log4j.properties solo tienes que poner:

log4j.logger.org.alfresco.web.bean.BrowseBean=debug

Después, tendrás que irte a la clase org.alfresco.web.bean.BrowseBean, editarla y añadir esto (fijate que puede que hayan sentencias que ya estén escritas, como los imports y la declaración del logger, y también que los "…" te los pongo de ejemplo para que veas que estarán en 3 zonas distintas del código):

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static final Log logger = LogFactory.getLog("miClase");

logger.debug("Escribe esto en la consola");


Lo del logger.debug("Escribe esto en la consola"); es un ejemplo que te pongo para que veas como se escribe en la consola utilizando los "logger", lo ideal es que ahí se pusiese el resultado que te devuelva el timer y no ese texto de ejemplo que yo te he puesto.

Por último, en la misma clase anterior, la org.alfresco.web.bean.BrowseBean, en su método search será donde tengas que poner toda la lógica del timer, para ello puedes consultar el enlace que te puse en el primer post.

Un saludo.
felipecc10
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Muchas Gracias Baskeyfield!

Trataré de hacer lo que me dices y te cuento como me fue…eso sí me podrías decir donde está la clase org.alfresco.web.bean.BrowseBean?

La verdad es que no logro dar con la clase a pesar de que la he buscado bastante.

Te pido ayuda porfavor!

Nuevamente gracias.
baskeyfield
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\lib\alfresco-web-client-3.2.jar
felipecc10
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Hola Baskeyfield:

Agradezco tu ayuda y mañana probaré ingresando el código.

Saludos Cordiales.
felipecc10
Member II

Re: MEDIR TIEMPO DE BÚSQUEDAS

Hola!

Te cuento que he decidido incorporar el timer en la clase BrowseBean.class y estoy listo para editarla, pero por alguna razon no logro escribir una sola palabra, tengo la versión 6.9 del netbeans…..sabes que pueda ser?


Agradezco tu ayuda.

Saludos