Busqueda dentro de un espacio sobre una propiedad

cancel
Showing results for 
Search instead for 
Did you mean: 
fstnboy
Active Member

Busqueda dentro de un espacio sobre una propiedad

Buenas!

Deseo realizar una busqueda dentro del "nodo actual" (currentNode), pero a la vez filtrar los resultados por una propiedad.

He estado mirando y he visto que hay distintos tipos de búsqueda (lucene, XPath, …). ¿Cual debería usar?¿Hay alguna página sobre la sintaxis a usar?
42 Replies
ajv
Member II

Re: Busqueda dentro de un espacio sobre una propiedad

Hola fstnboy!

Puedes echarle un vistazo a la siguiente página del wiki: http://wiki.alfresco.com/wiki/Search
Allí aclaran mucho cómo buscar por tipo, por el valor de determinadas propiedades, por contenido, por path, etc…

Espero que te resulte útil.
Hasta luego!
fstnboy
Active Member

Re: Busqueda dentro de un espacio sobre una propiedad

No consigo crear el serviceRegistry…..

¿que tendría que hacer? Ya he mirado la página http://wiki.alfresco.com/wiki/Services_Framework
ajv
Member II

Re: Busqueda dentro de un espacio sobre una propiedad

Hola fstnboy!

Para tener acceso a una instancia del serviceRegistry desde Java, puedes hacerlo de la siguiente forma:
ServiceRegistry serviceRegistry = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
A partir de ahí tendrás acceso a los diferentes servicios registrados en Alfresco. Por ejemplo:
NodeService nodeService = serviceRegistry.getNodeService();

Espero que te sirva. Smiley Very Happy
Hasta pronto!
fstnboy
Active Member

Re: Busqueda dentro de un espacio sobre una propiedad

Gracias! Resultó bien.

¿Porqué no aparece esa forma de obtener el serviceRegistry en la wiki?
ajv
Member II

Re: Busqueda dentro de un espacio sobre una propiedad

jejeje, pues no sé por q no aparece en el wiki fstnboy…
Pero recuerdo que en su día también tuve problemas con el service registry, porque no era capaz de encontrar un contexto en el que estuviera activo…y mirando el código fuente lo encontré  Smiley Very Happy

Bueno, me alegro de que te haya resultado a ti tambien  Smiley Tongue
Hasta luego!
fstnboy
Active Member

Re: Busqueda dentro de un espacio sobre una propiedad

Otra duda…

Existe alguna forma, para la búsqueda de lucene, de que estando en el nodo en el que esté pueda generar la query del path (de forma recursiva o algo así)?

gracias
ajv
Member II

Re: Busqueda dentro de un espacio sobre una propiedad

buenas,

Pues nunca lo he probado en una búsqueda lucene, pero el nodeService dispone del método getPath(nodeRef):
http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/service/cmr/repository/NodeServic...

ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null);
El path debería ser del tipo que muestra el código anterior, es decir, namespace:espacio/namespace:subespacio…
Para ello, el objeto Path que te devuelve el método getPath(), debes aplicarle la función toPrefixString, con un "resolver" de namespaces (si le pasas el servicio de namespace te irá bien…lo puedes coger del mismo serviceRegistry).
Aquí tienes un ejemplo:
nodeService.getPath(currentNode).toPrefixString(namespaceService)

Espero que te vaya bien!  :mrgreen:
Hasta luego!
fstnboy
Active Member

Re: Busqueda dentro de un espacio sobre una propiedad

Gracias de nuevo!! Eres un hacha
fstnboy
Active Member

Re: Busqueda dentro de un espacio sobre una propiedad

Gracias ajv, la query se creaba bien, pero no me busca lo que quiero. He realizado la búsqueda solo por aspecto (sin path query-s) y me busca el espacio que quiero, imprimo su path y es la siguiente:

13:33:13,755 INFO  [STDOUT] /app:company_home/ajd:AsesorÝa_x0020_JurÝdica/ajdSmiley Tonguerocedimientos/ajd:Administrativos/ajdSmiley Tonguerotecci¾n_x0020_de_x0020_datos/cmSmiley Tonguerueba_x0020_PD

Luego realizo la búsqueda con la siguiente query (con path):
13:44:21,687 INFO  [STDOUT] +ASPECT:"{http://www.libertyseguros.es/model/content/ajd/1.0}EsEmpresa" +PATH:"/app:company_home/ajd:AsesorÝa_x0020_JurÝdica/ajdSmiley Tonguerocedimientos/ajd:Administrativos/ajdSmiley Tonguerotecci¾n_x0020_de_x0020_datos//*"

La búsqueda la realizo estando en el siguiente nodo:
Path prefix: /app:company_home/ajd:AsesorÝa_x0020_JurÝdica/ajdSmiley Tonguerocedimientos/ajd:Administrativos/ajdSmiley Tonguerotecci¾n_x0020_de_x0020_datos

Gracias de antemano!