cancel
Showing results for 
Search instead for 
Did you mean: 

Duda con Lucene Search

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Buenos días,

tengo una duda sobre que se puede y que no se puede hacer con una búsqueda lucene.
Pondré un ejemplo, tengo estos 2 tipos, A y B, donde B tiene definida una asociación de documentos de tipo A
<type name="x:a">
   <title>A</title>
   <parent>cm:content</parent>
   <properties>
      <property name="x:campo1">
         <title>campo 1</title>
         <description>Descripción campo 1</description>
         <type>d:text</type>
         <mandatory>false</mandatory>
         <default></default>
      </property>
   </properties>
</type>
<type name="x:b">
   <title>B</title>
   <parent>cm:content</parent>
   <properties>
      <property name="x:campo2">
         <title>campo 2</title>
         <description>Descripción campo 2</description>
         <type>d:text</type>
         <mandatory>false</mandatory>
         <default></default>
      </property>
   </properties>

   <associations>
      <association name="x:asocA">
         <title>Asociaciones con documentos A</title>
         <description>Asociación de documentos del tipo A</description>
         <source>
            <mandatory>false</mandatory>
            <many>true</many>
         </source>
         <target>
            <class>x:a</class>
            <mandatory>false</mandatory>
            <many>true</many>
         </target>
      </association>
   </associations>
</type>

ahora imaginemos que tengo 1 documento A y 2 documentos B
A1.txt
B1.txt –> tiene una asociación con el documento A1.txt
B2.txt –> no tiene ninguna asociación con ningún documento

Se puede buscar que documentos del tipo B tienen asociado el documento A1.txt? siempre partiendo desde que lo único que tengo es el documento A1.txt
O sea, me tendría que devolver el documento B1.txt, que es el que tiene la  asociación con el documento A1.txt
Que debería poner en la lucene search? estoy haciendo pruebas desde el Node Browser, pero no consigo dar con ninguna solución.

Gracias de antemano.
13 REPLIES 13

cybermakoki
Champ in-the-making
Champ in-the-making
Bufff… no vas a poder… yo me volví loca y no pude hacerlo… al menos con una búsqueda lucene…

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Ok, gracias por responder.

Yo también me estaba volviendo loco, tendré que crear una regla que cuando se añada la asociación a un documento B, se cree una asociación en el documento A.

Lo dicho, muchas gracias Smiley Happy

cybermakoki
Champ in-the-making
Champ in-the-making
Eso es una buena solución Smiley Happy

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Buenas,
La solución esta de la regla que crea una asociación a 2 bandas me solucionó las cosas a medias, ahora vuelvo a tener la necesidad de realizar la búsqueda de los documentos que tienen asociados un documento en concreto (esta mejor explicado al principio del post).

Si alguien tiene una solución estaré muy agradecido de que me de la respuesta.
Yo he intentado todo lo que he podido, me he leído y releído la wiki del search: http://wiki.alfresco.com/wiki/Search y nada de nada…

Muchas Gracias de antemano

baskeyfield
Champ in-the-making
Champ in-the-making
Buenas,

¿Has comprobado que es lo que almacena realmente Alfresco como metadato association en el nodo B1? Usando el nodebrowser por ejemplo.

No tengo ningún documento de este tipo para poder comprobarlo, pero si por ejemplo lo que almacena en ese metadato a bajo nivel fuese el uuid del nodo A1, podrías lanzar consultas del tipo:

cm:association:2342409-2424-234-23424

La consulta anterior es incorrecta, solo es un ejemplo de concepto. 2342409-2424-234-23424 sería el uuid del nodo A1

Saludos.

baskeyfield
Champ in-the-making
Champ in-the-making
Hola otra vez,

He estado investigando y parece que las asociaciones (las non child association) no se indexan en lucene, por eso no es posible encontrarlas en lucene:

http://forums.alfresco.com/en/viewtopic.php?t=11636

Saludos.

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Muchas gracias por la información.

Es lo que me temía, ya que las asociaciones son como ArrayList, pueden tener mas de 1 nodo asociado, y por tanto no es directo.

Tendré que buscar otra solución.

baskeyfield
Champ in-the-making
Champ in-the-making
¿Cómo se estaba rellenando esa propiedad? Manualmente?

Si es de forma automática desde algún api, podrías crearte un metadato de tipo texto que hiciese la función de la asociación. Grabas el uuid y listo.

Saludos.

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Es una buena idea, pero no siempre es automático, lo tendremos en cuenta de todas maneras.

Muchas gracias por todo