cancel
Showing results for 
Search instead for 
Did you mean: 

Duda con query lucene en Alfresco 4.0e

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Buenas a todos,

Hace poco hemos realizado una migración de alfresco 3.3g a alfresco 4.0e, y tengo un problema con una query que antes si me funcionaba.

La query es esta:

+TYPE:"cm:category" +@cm\:name:"nombre de la categoria"

Usaba esta query para buscar una categoria, independientemente de que padres tuviera, directamente accedia a ella.
En la versión 3.3g, esta query me retornaba el nodo de la categoria, sin embargo, en la versión 4.0e no me devuelve nada.

La query esta sacada de la wiki de alfresco:
http://wiki.alfresco.com/wiki/Classification_And_Categories#Finding_Categories

Hice una reindexacion de lucene poniendo esto en el algresco-global.properties
index.recovery.mode=FULL

y me arranco sin ningún error. Pero sigue sin retornar nada la query

Puede ser que en alfresco 4.0e haya que retocar algún fichero para que reindexe las categorías? como si tuviera esa opción desactivada por defecto?

Buscando en la documentación de alfresco he encontrado esta página:
http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fsearch-fts-...

pero no se que es lo que debo tocar (si es que es realmente esto), ni donde lo puedo encontrar

Gracias por vuestra ayuda
18 REPLIES 18

ruben_arjonilla
Champ in-the-making
Champ in-the-making
vale, entonces no he de hacer lo de añadirle un "_", simplemente cojo el nodo, le hago save y a probar si funciona correctamente.

Muchas gracias por tu ayuda  Smiley Very Happy

cristinamr
World-Class Innovator
World-Class Innovator
Claro. La prueba debería ser algo como esto:


var catName="Empresas";  //Nombre de la categoría a buscar
var srchQuery = "+TYPE:\"cm:category\" +PATH:\"/cm:generalclassifiable//*\""; 
srchQuery += " +@cm\\:name:\""+catName+"//*\""; 
var categoria = search.luceneSearch(srchQuery); 

categoria.properties["cm:name"]="Empresas":

categoria.save();


Lo he hecho de cabeza y copiando una utilidad que tenia por ahí, pero debe ser algo parecido. Haz una pequeña prueba con una, y mira a ver si funciona.

Si te hace falta algo mas comentame y te compparto lo que tengo 😃

Un saludo!!
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Muchas gracias, eso si que me sirve, y también buscare algunos scripts que hice hace algun tiempo sobre categorias.

Con lo que tengo y tu script tengo de sobras.
Muchas gracias por todo

cristinamr
World-Class Innovator
World-Class Innovator
De nada hombre.

Ya nos vas comentando como van las pruebas 😃
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Tardare un poco mas de la cuenta porque intentare hacerla recursivo el script (que se ejecute el solito para todas las categorías), que hay mas de 600, y las hay que están dentro de otras categorías.

- cat 1
  - cat 1.1
  - cat 1.2
    - cat 1.2.1
    - cat 1.2.2
      - cat 1.2.2.1
cat 2


ya tengo algo echo en recursivo para categorías, pero ahora estoy también metido en en otros temas, así que no voy a poder echarle el 100% de mis horas a esto, pero en cuanto lo tenga listo posteo el script

cristinamr
World-Class Innovator
World-Class Innovator
Ojea esto. Lo escribí hace tiempo, para una 2.X Pero te puede servir  :mrgreen:
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

ruben_arjonilla
Champ in-the-making
Champ in-the-making
Al fin tuve tiempo de hacer el script.

Gracias por el link, me ha ayudado mucho:

function recorre(nodeVar) 
{
   limpiaCatXNodo(nodeVar);
   var childrenList = nodeVar.children;
   for (var i = 0; i < childrenList.length; i++) {
      recorre(childrenList[i]);
   }
}
function limpiaCatXNodo(node){
   var nodeName = node.properties.name;
//   logger.log(nodeName);
   node.properties.name = nodeName + "_";
   node.save();
   node.properties.name = nodeName;
   node.save();
}

function main()
{
   var nodes = classification.getRootCategories("cm:categoryRoot");
   for (var i=0; i<nodes.length; i++)
   {
      var node = nodes[i];
      logger.log("node.properties[\"cm:name\"]: "+node.properties["cm:name"]);
      if("General" == node.properties["cm:name"])
      {
         nodeGeneral = node;
         i = nodes.length;
      }
   }
   
   recorre(nodeGeneral);
}

main();

Es básicamente el tuyo, modificado para que solamente modifique el nombre de la categoría y se lo vuelva a poner bien.

cristinamr
World-Class Innovator
World-Class Innovator
Perfecto!! Muchas gracias por compartir  :mrgreen:
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc

jeferz
Champ in-the-making
Champ in-the-making
Cuando intento realizar una búsqueda de un campo que contiene "."  ejemplo modelo:campo:"1.2" el campo esta tokenizado, funciona muy bien si lo hago desde el buscador, o desde node browser, pero cuando lo hago desde un javascript no funciona, pero si sustituyo ese "1.2" por "1-2", si funciona, sabes a que se debe esto? y como podría realizar una búsqueda de un campo que contenga .


Gracias!