Error Lucene, no trae las propiedades

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

Error Lucene, no trae las propiedades

Hola a todos,

Tengo un problema con las búsquedas en lucene, a ver si podeis ayudarme, os explico:

Me he creado un tipo de documento modificando los metadatos para añadir nuevas propiedades al documento y ataco a alfresco desde una aplicación java.

Lo hace perfecto, y me muestra el listado de documentos y carpetas de forma perfecta, pero cuando voy a realizar una búsqueda ya sea por un campo o por varios, me encuentra los documentos que me debe encontrar pero no se trae las propiedades de los mismos. Sin embargo, si realizo la misma consulta desde el propio alfresco me funciona correctamente.

Muchas gracias por dedircame vuestro tiempo, un saludo
4 Replies
pjcaracuel_2349
Active Member II

Re: Error Lucene, no trae las propiedades

Buenas,

Lo hace perfecto, y me muestra el listado de documentos y carpetas de forma perfecta, pero cuando voy a realizar una búsqueda ya sea por un campo o por varios, me encuentra los documentos que me debe encontrar pero no se trae las propiedades de los mismos.

Puedes poner el codigo que estas utilizando para ello?

Saludos
gustena
Member II

Re: Error Lucene, no trae las propiedades

Hola.

Lo que comentas tambien me ocurrio a mi cuando estube hacendo las pruebas de la nueva version de Alfresco Community 3.2. Por lo visto en las busquedas solo debueve el id y el path de los documentos supongo que por temas de rendimiento. Lo que hay que hacer es una vez tener el resultado de la consulta traerse el documento que tiene ese id.

Te pongo un ejemplo para que veas como se hace:

En las versiones previas a la 3.2


                Query query = new Query(Constants.QUERY_LANG_LUCENE,
                                                      "+PARENT:\"workspace://SpacesStore/"+ nodes[0].getReference().getUuid() + "\" +TEXT:\"" + searchValue + "\"");
               
                // Execute the query
                QueryResult queryResult = repositoryService.query(STORE, query, false);
               
                // Display the results
                ResultSet resultSet = queryResult.getResultSet();
                ResultSetRow[] rows = resultSet.getRows();
               
                if (rows != null)
                {
                    // Get the infomation from the result set
                    for(ResultSetRow row : rows)
                    {
                        String nodeId = row.getNode().getId();
                        ContentResult contentResult = new ContentResult(nodeId);
                       
                        for (NamedValue namedValue : row.getColumns())                    
                        ….

Pues bien en la version 3.2 de alfresco esto quedaría del siguiente modo                    

              
                Query query = new Query(Constants.QUERY_LANG_LUCENE,
                                                      "+PARENT:\"workspace://SpacesStore/"+ nodes[0].getReference().getUuid() + "\" +TEXT:\"" + searchValue + "\"");
               
                // Execute the query
                QueryResult queryResult = repositoryService.query(STORE, query, false);
               
                // Display the results
                ResultSet resultSet = queryResult.getResultSet();
                ResultSetRow[] rows = resultSet.getRows();
               
                if (rows != null)
                {
                    // Get the infomation from the result set
                    for(ResultSetRow row : rows)
                    {
                        String nodeId = row.getNode().getId();
                        ContentResult contentResult = new ContentResult(nodeId);
                        ResultSetRowNode node = row.getNode();
                        Reference ref1 = new Reference(STORE, node.getId(), null);
                        Query query2 = null;
                        Node[] noderesult = null;
                        noderesult = WebServiceFactory.getRepositoryService().get(new Predicate(new Reference[] { ref1 }, STORE, query2));
                      //Recorremos cada nodo-hijo devuelto, normalmente 1.
                        for (int x1 = 0; x1 < noderesult.length; x1++) {
                           Node row1 = noderesult[x1];
                           //Recorremos las Propiedades
                           for (NamedValue namedValue : row1.getProperties())
                           …

Preubalo y me dices si te ha funcionado.

Un Saludo

Gustavo Tena
Universidad de Valencia
khuzudum
Member II

Re: Error Lucene, no trae las propiedades

Pues sí, era eso, muchísimas gracias por todo gustena  Smiley Happy

Por cierto, lo de resuelto no se donde ponerlo exactamente, en el anterior tema lo puse en el título ¿está bien así o hay que ponerlo en el primer post?

Un saludo y gracias de nuevo por la ayuda.
gustena
Member II

Re: Error Lucene, no trae las propiedades

No hay de que. Me alegro que te haya servido.

Lo de resuelto con que lo pongas en el titulo es suficiente.

Un Saludo

Gustavo Tena
Universidad de Valencia