Consultar por atributos de un nodo funciona de forma extraña

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

Consultar por atributos de un nodo funciona de forma extraña

Hola a todos, de antemano muchas graicas.

Verán tengo un conjunto de nodos que cumple que su creador se llama b12jose. Esto lo se seguro y ademas cuando uso el explorador de nodos puedo ver perfectamente q esta propiedad es así.
{http://www.alfresco.org/model/content/1.0}creator   b12jose   {http://www.alfresco.org/model/dictionary/1.0}text      false

Al realizar al siguiente consulta :
( PATH:"/app:company_home/cm:Library/*" ) AND @cm\:creator:b12jose  (NOTA la ruta es correcta, ya he comprabado que no sea esto)
NO obtengo resultados  NINGUNO, a pesar q existe  más de un nodo (3 exactamente) que validan estás condiciones.
Lo peor es que si realizo está
( PATH:"/app:company_home/cm:Library/*" ) AND @cm\:creator:b12jos (NOTAR que la diferencia es q falta la última letra.)
Obtengo los resultados correctos correspondientes a la perimera búsqueda y encambio no hay ningún nodo que valide que el creator sea b12jos.

Ahora más si en vez de esa cosulta realizo esta
( PATH:"/app:company_home/cm:Library/*" ) AND @cm\:creator:admin
Si obtengos todos los nodos que validan la condición.
PERO si realizo
( PATH:"/app:company_home/cm:Library/*" ) AND @cm\:creator:admi (NOTAR que falta el último caracter como antes)
No obtengo ningún nodo (como debería ser)

NO SE QUE ESTÁ PASANDO. Alguien tiene alguna idea que me pueda ayudar.
MUCHAS GRACIAS A TODOS
3 Replies
ajv
Member II

Re: Consultar por atributos de un nodo funciona de forma extraña

Hola Alakat,
Bienvenido al foro!

Aunque aparentemente pueda parecer un comportamiento extraño, yo diría que es algo "normal". Lo único que requiere entender un poquito cómo funciona la indexación de propiedades.
Si una propiedad es "tokenised" entonces se introduce en los índices sus tokens, no el valor de la propiedad al completo. Por ejemplo, para la cadena "The Hello World" por defecto se tokenizará en "hello" y "world". Algunas palabras como "The" se excluyen de los tokens generados (son las palabras conocidas como "stop words"). Por tanto, si se intenta buscar por el token "The" o incluso "the" no se encontraría nada.

En Lucene, si realizamos la búsqueda:
TEXT:"The Hello World" 
obtendremos los resultados esperados.
Si no usamos dobles comillas, se buscará correspondencia exacta con los tokens. Por tanto, se asume que si no usas comillas conoces exactamente los tokens por los que quieres buscar.

Los siguientes ejemplos funcionarían:
TEXT:"hello" 

TEXT:"World"

TEXT:"WORLD"

TEXT:"The Hello World"

TEXT:"The World"

TEXT:"HELLO"

Así como los siguientes, aunque van directamente por tokens:
TEXT:hello

TEXT:world
Sin embargo, los siguientes ejemplos no funcionarían porque realiza búsqueda exacta por tokens (y los tenemos almacenados en minúscula y nada de stop words):
TEXT:"The"

TEXT:the

TEXT:Hello

TEXT:WORLD
Resumiendo, encapsular los valores entre dobles comillas debería funcionar como por arte de magia. El uso de valores sin entrecomillar requiere un conocimiento bastante profundo del analizador de tokens, por lo que no es muy recomendable usarlos. Lo mejor es encerrar los valores en dobles comillas.

Volviendo a tu caso, admin lo encuentra porque está tokenizado como admin. admi no te lo encontraba porque tu analizador no disponía de ningún token que tuviera el valor "admi".
La verdad que el otro caso de b12jose sí que es extraño. No soy experto en la materia, y no sé exactamnte cómo tokeniza las propiedades del "creator", pero en teoría si entrecomillas tu valor, te debería ir perfecto:
( PATH:"/app:company_home/cm:Library/*" ) AND @cm\:creator:"b12jose"
Para información más detallada, puedes echarle un vistazo a la parte de búsquedas del Wiki de Alfresco: http://wiki.alfresco.com/wiki/Search

Bueno, espero que te haya resultado útil.
Un saludo!!
alakat
Member II

Re: Consultar por atributos de un nodo funciona de forma extraña

Buenas a todos,
Lo primero muchas gracias ajv.

La verdad de lucene no tenía mucha idea de su funcionamiento interno. Tu post me ha ayudado a comprenderlo un poco mejor. (ahora lo odio un poco menos  :mrgreen: )

Pero mucho me temo que tengo el mismo problema. Y empiezo a agobiarme, la web q me propones creo q me la he leido entera de arriba abajo y de abajo arriba. Y solo he encontrado lo que me cuentas pero sigo sin darle explicación (he usado las comillas y nada)

Ademas mi problema reside en otros atributos que son enlaces uuids y claro no puedo quitarle el último token para asegurarme.
Alguien le ha pasado esto

Muchas gracias.
PD: He probado a reiniciar los indices y NADA!!!!!!
Si alguien tiene algún ejemplo q me pueda ayudar y sea muy grande para este foro me lo puede enviar a malopez@fidesol.org
Gracias de nuevo
ajv
Member II

Re: Consultar por atributos de un nodo funciona de forma extraña

Hola Alakat,

La verdad que no he tenido más tiempo para hacer pruebas al respecto…Antes de escribirte el post con la explicación de lucene y sus índices, realicé unas pruebas en un Alfresco, creándome un usuario b12jose, entrando como éste y añadiendo contenido.
Al realizar la búsqueda sobre cm:creator con las dobles comillas, me los encontraba sin problemas…El usuario ese existe en tu Alfresco como usuario?
Has probado de hacer esto mismo con otro usuario? por ejemplo, un usuario que no tenga números en su username? En teoría, no afecta en absoluto eso de los números, pero por probar…Yo me crearía un usuario como de pruebas, añadiría con él contenido y lanzaría la select a ver q tal.
Así sin más información no sé que te puede estar fallando…pues no llegué a reproducir exactamente tu problema.  Smiley Sad

Saludos y espero que tengas suerte!