• Búsquedas y Metadatos

  • Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #48421  by gdeldago
 
Amigos de OpenKM,

Tengo una aplicación montada sobre OpenKM donde se hace uso de metadatos. Ahora descubro el problema (ya documentado aquí en los foros) sobre el indexador y las dificultades cuando los valores (values) contienen espacios.

En el escenario actual es fundamental poder realizar búsquedas incluyendo como criterios los metadatos (y esa es una facilidad muy interesante de la búsqueda avanzada disponible en OpenKM). El caso es, como pueden imaginarse, que cuando los datos contienen espacios las búsquedas no tienen éxito.

La pregunta ahora es ¿cuál sería la mejor forma de resolver la situación?

Idea:
1) Reemplazar los values de los metadatos reeemplazando los espacios por guiones bajos.
2) Actualizar la columna
Code: Select all
NPG_VALUE
de la tabla
Code: Select all
OKM_NODE_PROPERTY
en la base de datos.
3) Hacer una reconstrucción de los índices Lucene

¿Estaría bien este procedimiento?

En caso afirmativo:

¿Podría tener labels con espacios y values con guiones?

Tengo algunos flujos de trabajo que actulizan (mediante funcione hendler, los metadatos ¿en ese caso debo utilizar el label o el value? (hoy funciona porque son iguales)

El código que empleo para actualizar metadatos desde el código es de este tipo:
Code: Select all
/**
* Asigna valores
 */
Map<String, String> properties = new HashMap<>();
properties.put("okp:caratula.estado", nuevoEstado);
OKMPropertyGroup.getInstance().setPropertiesSimple(null, path, "okg:caratula", properties);           
Toda ayuda será bienvenida

¡Muchas gracias!
Gus
 #48451  by jllort
 
Para el lucene los espacios indican 2 palabras, esto es algo normal, lo que si puedes hacer es que el separador que se tenga en cuenta únicamente sean los espacios y obviar carácteres como guiones etc... Puedes leer https://docs.openkm.com/kcenter/view/ok ... lyzer.html -> WhiteSpaceAnalyzer

En tu caso si quieres que una cadena de texto con espacios sea un solo token, la mejor opcion es que actualices todos los espacios de los metadatos a nivel de base de datos con un guión bajo ( por ejemplo ) y despues vayas a la utilizades y realizar un rebuild indexes https://docs.openkm.com/kcenter/view/ok ... dexes.html ( en concreto Lucene Indexes ).

Antes de hacer el cambio en todos los campos, te aconsejo que realices una prueba con un campo a ver si a nivel del buscador el resultado es el esperado y en caso afirmativo ya te puedes lanzar a la actualización a nivel de base de datos.
 #48457  by gdeldago
 
Hola Jllort.

En primer lugar muchas gracias por tu respuesta.

Hice algunas pruebas y, efectivaemnte, si elimino los espacios y reconstruyo los índices el buscador funciona perfectamente (no me funcionó con guiones bajos pero para el caso es lo mismo).

Con esto tengo resuelta una parte del problema. Cambio todos los values y, actualizo la BD, corro el proceso de rebuild lucene indexes y listo.

El problema lo tengo con los workflows que están activos. Desde esos mismos workflows actualizo los metadatos. He confirmado mediante una prueba que la función del API (la muestro en mi intervención anterior) toma como parámetro el value y no el label. Luego, si cambio los metadatos, los workflows no podrán actualizar bien los campos.

La pregunta es: ¿puede modificarse el actionhandler (la clase java) de un workflow que se encuentra en ejecución?
si no fuera posible, que otro modo tendría de resolver esta situación.

Muchas gracias nuevamente
Gus
 #48461  by jllort
 
Por lo que entiendo es que los forms de la definición de los metadatos los tienes con unos valores que se han de modificar. Pues este si que es un problema que tiene mala solución, al subir una nueva versión del workflow los anteriores continuaran ejecutándose con la versión antigua o sea que continuarán con el problema.

O paras los workflows que ahora estan en curso y se inician de nuevo con la versión modificada.
O tienes un control de todos los workflows que estan en curso y haces un seguimiento ejecutando diariamente un script de actualización de metadatos hasta que todos estos WF hayan terminado.

Como te decía esta parte tiene mala solución.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.