AnsweredAssumed Answered

Búsqueda de contenidos a través de JAVA (RESUELTO DE VERDAD)

Question asked by rhakaro on Oct 29, 2009
Latest reply on Nov 18, 2009 by rhakaro
Hola a todos, en primer lugar disculparme por repetir tema que ya está más que hablado. El problema que tengo es que necesito realizar búsquedas desde un programa en JAVA sobre contenidos en Alfresco. He de decir hasta ahora lo único que he hecho son referencias a nodos, subir y descargar ficheros.

Llevo toda la tarde leyendo la wiki, este foro (en inglés y en español) y no termino de aclararme sobre cómo hacer referencia a Metadatos en las búsquedas. Debo ser un poco torpe :(

Encontré éste código que ayuda a entender cómo funciona el tema:

                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())
                           …

Pero me da bastantes errores, como por ejemplo la clase ContentResult que no me la reconoce (tengo todos los jars).

Luego también está este otro código:

                SearchParameters sp = new SearchParameters();
           sp.addStore(getStoreRef());
           sp.setLanguage(SearchService.LANGUAGE_LUCENE);
           sp.setQuery("TYPE:\"{http://www.alfresco.org/model/content/1.0}content\"");
         
           results = serviceRegistry.getSearchService().query(sp);
           for(ResultSetRow row : results){
                   NodeRef currentNodeRef = row.getNodeRef();
               …
           }

Pero líneas en las que aparece getStoreRef() o serviceRegistry me dan error (leí algo de utilizar Spring para que rellene ciertos beans, pero en ese aspecto no sé a qué se refieren).

El caso, que estoy muy perdido, necesito un ejemplo sencillo, si alguien está dispuesto a pegármelo por aquí, para poder empezar.

Supongo que necesite conectarme al servicio de Alfresco, y ejecutar una sentencia (bien en XPath o en Lucene) y obetener los resultados, no??

Siento mi ineptitud, y agradezco cualquier aportación (o una breve explicación).

Muchas gracias de antemano a todos/as!!!

Outcomes