Problema con Lucene por culpa de TagScope y Refresh 'manual'

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

Problema con Lucene por culpa de TagScope y Refresh 'manual'

Buenas, tengo un problema con una query Lucene.

Tengo una carpeta en CompanyHome, llamada Trabajo, en la que le añadí el aspect TagScope.

Si uso esta cualquiera de estas 2 lucene query:
QNAME:"app:company_home/cm:Trabajo/*"
PATH:"/app:company_home/cm:Trabajo/*"

me funciona correctamente.

El problema lo tengo con el refresh del tagscope.

Si añado un documento dentro de la carpeta Trabajo, y le añado tags al documento, el tagscope se actualiza correctamente, pero si por ejemplo, copio un documento de otra carpeta aquí dentro, el tagScope no se actualiza.

Por lo que cree un pequeño script que refresca el tagscope de la carpeta, y lo puse como regla cuando un fichero entra a la carpeta.
main();

function main()
{
   var node = document.parent;
   var scope = node.tagScope;
   scope.refresh();
}

El resultado es muy bueno, ya que esto cada vez que entra un fichero a la carpeta, actualiza el tagscope, el problema viene en que, de vez en cuando, las querys anteriores dejan de funcionar.
Si voy a la carpeta trabajo, y modifico el nombre de la carpeta, por ejemplo le pongo Trabajo_, guardo, y vuelvo a ponerle el nombre Trabajo, las querys vuelven a ir, hasta que en algún momento, se vuelve a ejecutar el script de refresco del tagscope, y vuelve a dejar de funcionar.

Que puede pasar?
No entiendo en que afecta el refresco del tagscope de la carpeta con que dejen de funcionar las querys lucene

Gracias de antemano
1 Reply
ruben_arjonilla
Member II

Re: Problema con Lucene por culpa de TagScope y Refresh 'manual'

lo que he echo para solucionarlo es modificar el nombre de la carpeta cada vez desde el script que actualiza el tagscope…
Se que no es la solución más correcta, pero es lo único que he encontrado que funciona.
main();

function main()
{
   var node = document.parent;
   var scope = node.tagScope;
   scope.refresh();

//aqui el trozo de codigo que hace el cambio del nombre a la carpeta
var name = node.name;
node.name = name + "_";
node.save();

//aqui le vuelvo a poner el nombre que tenia
node.name = name;
node.save();

}