cancel
Showing results for 
Search instead for 
Did you mean: 

Error Lucene, no trae las propiedades

khuzudum
Champ in-the-making
Champ in-the-making
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 4

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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