AnsweredAssumed Answered

Busquedas lentas Alfresco

Question asked by dewil on Jan 25, 2010
Latest reply on Jan 29, 2010 by dewil
Buenas tardes a todos.

Tengo un problema al realizar busquedas con "Lucene", tanto utilizando el "WebService", como realizando la búsqueda desde el mismo "Node Browser de Alfresco". ME explico, si realizo una búsqueda del tipo:
@miEsquema\:miPropiedadIndexada:"unapalabra"
Me salen unos 100 o 200 resultados y tarda bastante poco en realizar la búsqueda (~1 seg, muy rapido).

Sin embargo, cuando hago una búsqueda de varios miles de resultados, por ejemplo:
@cm\:creator:"admin"

Aunque la salida es del orden de 10.000 resultados, tarda muchísimo (~ 40 MINUTOS !!!!).

Revisando un poco todo el funcionamiento, y documentándome, veo que utilizando la busqueda pesada en el WebService da un "Read Time Out" (entiendo que supera el limite de milisegundos que le añado en la configuración de alfresco), adeamás la SQL que ejecuta Alfresco se queda pillada en la BD (que por cierto es Oracle) y tarda los 40 minutos que he comentado antes en terminarla. En el Node Browser si que la ejecuta sin dar "Read Time Out", pero tardando los 40 minutos que he comentado antes.

Realmente ahora mismo estoy utilizando Alfresco como "Contenedora de documentos estructurados", pero ahora además de esto voy a ir necesitando realizar busquedas desde un portal web (mediante WebService lo más posible) por los metadatos de Alfresco con Lucene, y claro, se puede dar el caso que buscando una palabra sencilla se encuentren 1000, 2000 o 5000 resultados (no me importaría si es necesario capar el número de resultado si con esto hago que funcione correctamente).

La versión de mi Alfresco es la 1.4 con Oracle en una máquina Linux, pero con las actualizaciones que estamos realizando migraremos a una versión mas reciente, aunque me temo que lo que me ocurre no es problema de versión. Por si sirve… de esta manera es como busco con el WebService:

RepositoryServiceSoapBindingStub repoWs = WebServiceFactory.getRepositoryService(alfSession.getResult());
      Query query = new Query();
      query.setLanguage(QNames.QUERY_LANG_LUCENE);
    StringBuffer qbuf = new StringBuffer(" +@cm\\:creator:\"admin\" ");
query.setStatement(qbuf.toString());
      try {
            logger.debug("Query buscando: ".concat(StringUtils.abbreviate(query.getStatement(), 1000)));
         QueryResult qres = repoWs.query(alfSession.getDefaultStore(), query, true);

Muchisimas gracias por cualquier consejo de ante mano.

Outcomes