This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Previous revision | ||
claves_fantasma [12/05/2009 00:00] |
claves_fantasma [12/05/2009 12:58] fernando |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Claves fantasma en Catalis ====== | ||
+ | <note> | ||
+ | Estas son las notas usadas para detectar la causa de un problema en el diccionario de Catalis, cuya solución fue publicada en un [[http://groups.google.com.ar/group/catalis/browse_thread/thread/d986c0d4b6181966/057a8b39f32c7368|mensaje al grupo]]. | ||
+ | </note> | ||
+ | |||
+ | Experimentos con las claves fantasma en Catalis 2005.06.09, | ||
+ | en Windows 2000, con wxis 5.4. | ||
+ | |||
+ | 14 de julio 2005 | ||
+ | |||
+ | |||
+ | Edito el registro 100, agrego "CATALIS" en el título. Grabo. | ||
+ | Aparece CATALIS en el diccionario con 1 posting. | ||
+ | |||
+ | Vuelvo a editar el registro 100. Añado otra palabra (FGOMEZ) en | ||
+ | el título. Grabo. Aparece CATALIS en el diccionario con 2 postings, | ||
+ | y FGOMEZ con 1. | ||
+ | |||
+ | Vuelvo a editar el registro 100. Añado otra palabra (TEST) en | ||
+ | el título. Grabo. Aparece CATALIS en el diccionario con 3 postings, | ||
+ | FGOMEZ con 2, TEST con 1. | ||
+ | |||
+ | And so on... Muy mal. | ||
+ | |||
+ | Paso 1: cambio por wxis 5.0. Añado la palabra CATALISA en el título. | ||
+ | 4 CATALIS | ||
+ | 3 FGOMEZ | ||
+ | 2 TEST | ||
+ | 1 CATALISA | ||
+ | |||
+ | Es decir, el mismo problema. | ||
+ | |||
+ | Paso 2: simplificar la FST. La dejamos así: | ||
+ | |||
+ | 9204 4 v245^a | ||
+ | |||
+ | Edito el registro 100, elimino CATALISA del título. Grabo. | ||
+ | |||
+ | 5 CATALIS | ||
+ | 4 FGOMEZ | ||
+ | 3 TEST | ||
+ | 1 CATALISA | ||
+ | | ||
+ | Todo sigue igual. | ||
+ | |||
+ | Paso 3: retocar el script de grabación. | ||
+ | |||
+ | Empiezo por suprimir la segunda grabación, la que usa <write>Lock</write>. | ||
+ | Añado CATALISB al registro 100. | ||
+ | |||
+ | 5 CATALIS | ||
+ | 4 FGOMEZ | ||
+ | 3 TEST | ||
+ | 1 CATALISA | ||
+ | 1 CATALISB | ||
+ | | ||
+ | Eso se ve bien. Elimino CATALISB en el registro 100, y tenemos: | ||
+ | |||
+ | 5 CATALIS | ||
+ | 4 FGOMEZ | ||
+ | 3 TEST | ||
+ | 1 CATALISA | ||
+ | |||
+ | Correcto. Entonces el problema tiene que ver con la 2da grabación. | ||
+ | |||
+ | Probemos con una FST vacía en la 2da grabación: <parm name="fst"></parm> | ||
+ | |||
+ | Agrego CATALISC al registro 100. Reviso el diccionario: | ||
+ | |||
+ | 5 CATALIS | ||
+ | 4 FGOMEZ | ||
+ | 3 TEST | ||
+ | 1 CATALISA | ||
+ | 1 CATALISC | ||
+ | | ||
+ | Correcto. Ahora elimino CATALISC: | ||
+ | |||
+ | 5 CATALIS | ||
+ | 4 FGOMEZ | ||
+ | 3 TEST | ||
+ | 1 CATALISA | ||
+ | |||
+ | Correcto. | ||
+ | |||
+ | Ahora intento ir hacia atrás, y aparece algo extraño: al reemplazar | ||
+ | <parm name="fst"></parm> por <!--parm name="fst"></parm--> (que es equivalente | ||
+ | a la situación original), el problema no se produce. ¿¿¿??? | ||
+ | |||
+ | Empecemos a probar con otro registro, el 099. Vuelve a andar bien, con el script | ||
+ | original! Es decir, deshice los cambios, y aun así el error no aparece. | ||
+ | |||
+ | Arranco de nuevo, con una instalación fresca. | ||
+ | El problema reaparece. | ||
+ | Añado <parm name="fst"></parm> en grabar.xis. | ||
+ | El problema sigue allí. | ||
+ | Reemplazo por <parm name="fst"><pft>'0 0 /* nada */'</pft></parm> | ||
+ | El problema sigue allí. | ||
+ | |||
+ | Elimino el bloque de la 2da grabación, que antes sirvió como solución. | ||
+ | Pero sigue el problema. | ||
+ | |||
+ | ¿¿Qué pasa acá?? | ||
+ | |||
+ | ---------------------------- | ||
+ | |||
+ | Vamos a probar con una base nueva (vacía), y una FST muy simple: | ||
+ | |||
+ | 9001 0 '-NC=',v001 | ||
+ | 9204 4 v245^a | ||
+ | | ||
+ | Creo un registro con 'test1' en el título. El diccionario muestra: | ||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | | ||
+ | Agrego 'test2'. Grabo. | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | |||
+ | Anda bien, pero ojo: está eliminada la 2da grabación. | ||
+ | |||
+ | Habilito la 2da grabación, con una FST que no genera nada, y sigue bien: | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | 1 TEST3 | ||
+ | |||
+ | Ahora, como otra curiosidad, vemos volviendo a la base DEMO que pese a la | ||
+ | multiplicidad de postings para los términos del título, hay un único | ||
+ | posting para -NC=000100. | ||
+ | |||
+ | Quito la línea de fst, vuelvo a grabar: | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | 1 TEST3 | ||
+ | 1 TEST4 | ||
+ | |||
+ | Vuelvo a la FST original. En el primer intento, anda bien: | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | 1 TEST3 | ||
+ | 1 TEST4 | ||
+ | 1 TEST5 | ||
+ | |||
+ | En el segundo intento, aparece el problema (tarda en actualizar la FST?): | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | 1 TEST3 | ||
+ | 1 TEST4 | ||
+ | 2 TEST5 | ||
+ | 1 TEST6 | ||
+ | |||
+ | Y sigue: | ||
+ | |||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | 1 TEST3 | ||
+ | 1 TEST4 | ||
+ | 3 TEST5 | ||
+ | 2 TEST6 | ||
+ | 1 TEST7 | ||
+ | | ||
+ | ¡Pero sólo se presenta la multiplicidad en los términos más recientes! | ||
+ | |||
+ | Parece que un cambio en la FST no se manifiesta en la primera grabación | ||
+ | posterior al cambio, sino recién en la siguiente. | ||
+ | |||
+ | ----------------------------- | ||
+ | |||
+ | Vuelvo a probar. Base: DEMO original. FST: original. Script grabar.xis: original | ||
+ | |||
+ | test1 -> ok | ||
+ | test2 -> duplica | ||
+ | test3 -> duplica | ||
+ | |||
+ | --------------------- | ||
+ | |||
+ | Intentemos reproducir el test inicial (véase arriba). | ||
+ | |||
+ | Pongo CATALIS en el título, grabo. Términos previos (PROMOTING, -NC=000100) | ||
+ | no se ven duplicados. | ||
+ | |||
+ | Pongo FGOMEZ. Grabo. Aparecen duplicados: PROMOTING, CATALIS, pero -NC=000100 | ||
+ | sigue teniendo un único posting. | ||
+ | |||
+ | Pongo CATALIS2, grabo. Aparecen con 3 postings PROMOTING y CATALIS. | ||
+ | |||
+ | Pongo CATALIS3, grabo. Todo se duplica. Excepto -NC=000100 que sigue con un | ||
+ | único posting. | ||
+ | |||
+ | ------------------------ | ||
+ | |||
+ | Prueba paso a paso, para informar (al wiki). | ||
+ | |||
+ | 1. Plataforma: Windows 2000 Professional | ||
+ | 2. WXIS 5.4 (WXIS release date: 20030314) <-- ¿esta es la pública? | ||
+ | 3. Catalis 2005.06.09 (Windows), instalación fresca | ||
+ | 4. Usuario XX | ||
+ | |||
+ | Ingreso a la base DEMO | ||
+ | Listado por MFN, a partir de 1 | ||
+ | Edito registro 000001 (click en el botón "000001") | ||
+ | En el título (245$a) escribo TEST1: "TEST1 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | Búsqueda -> Índice (términos asociados únicamente a este registro): | ||
+ | 1 -NC=000001 | ||
+ | 1 TEST1 | ||
+ | 1 CHARLOTTESVILLE | ||
+ | 1 BURKETT | ||
+ | |||
+ | Edito registro 000001 (click en 000001) | ||
+ | Agrego TEST2: "TEST1 TEST2 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | Búsqueda -> Índice | ||
+ | 1 -NC=000001 | ||
+ | 1 CHARLOTTESVILLE | ||
+ | 1 BURKETT | ||
+ | 2 TEST1 <-- suma un posting | ||
+ | 1 TEST2 <-- nuevo término | ||
+ | Sólo se ha duplicado TEST1; los términos pre-existentes siguen igual. | ||
+ | | ||
+ | Edito registro 000001 (click en 000001) | ||
+ | Agrego TEST3, elimino TEST1: "TEST2 TEST3 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | Búsqueda -> Índice | ||
+ | 1 -NC=000001 | ||
+ | 1 CHARLOTTESVILLE | ||
+ | 1 BURKETT | ||
+ | 2 TEST1 <-- no se entera de que fue borrado | ||
+ | 2 TEST2 <-- suma 1 posting | ||
+ | 1 TEST3 <-- nuevo término | ||
+ | |||
+ | Edito registro 000001 | ||
+ | Vuelvo a poner TEST1, borro TEST3: "TEST1 TEST2 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 3 TEST1 <-- suma 1 posting | ||
+ | 3 TEST2 <-- suma 1 posting | ||
+ | 1 TEST3 <-- no se entera de que fue borrado | ||
+ | |||
+ | OK, ahora toquemos algo. FST o script? Script. Elimino la 2da grabación. | ||
+ | |||
+ | Edito 000001 | ||
+ | Agrego TEST3: "TEST1 TEST2 TEST3 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 4 TEST1 | ||
+ | 4 TEST2 | ||
+ | 2 TEST3 | ||
+ | Todos suman un posting. | ||
+ | |||
+ | Reemplazo la biblio.fst original (biblio.fst.original) por esta (biblio.fst.corta): | ||
+ | 9001 0 '-NC=',v001 | ||
+ | 9204 4 v245^a | ||
+ | | ||
+ | Edito el registro 000001. | ||
+ | Agrego TEST4: "TEST1 TEST2 TEST3 TEST4 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | Todos suman un posting. | ||
+ | |||
+ | Repito lo mismo. | ||
+ | Edito el registro 000001. | ||
+ | Quito TEST4: "TEST1 TEST2 TEST3 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | |||
+ | El índice se actualiza de manera "esperada": las macanas previas no se tocan, | ||
+ | pero desaparece el término TEST4 que fue borrado. Nótese que hubo que repetir | ||
+ | la operación luego del cambio en la FST para que el problema se vaya. | ||
+ | |||
+ | Una más: | ||
+ | Agrego TEST4: "TEST1 TEST2 TEST3 TEST4 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | Sigue andando bien. | ||
+ | |||
+ | Observación: al hacer el primer cambio (en grabar.xis), no repetí la operación. | ||
+ | Quizás habría sucedido algo similar, debo probarlo. | ||
+ | |||
+ | Ahora vamos a restituir la FST original. | ||
+ | |||
+ | Edito 000001. | ||
+ | Agrego TEST5: "TEST1 TEST2 TEST3 TEST4 TEST5 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | 1 TEST5 | ||
+ | Sigue bien! | ||
+ | |||
+ | Repito. | ||
+ | Edito 000001. | ||
+ | Elimino TEST5: "TEST1 TEST2 TEST3 TEST4 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | 1 TEST5 | ||
+ | Epa... TEST5 es fantasma! | ||
+ | |||
+ | Restauro la versión original de grabar.xis (descomento) | ||
+ | Edito 000001. | ||
+ | Agrego TEST5: "TEST1 TEST2 TEST3 TEST4 TEST5 Africa's second wave of freedom :" | ||
+ | Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | 2 TEST5 <-- suma 1 al fantasma | ||
+ | |||
+ | Repito, eliminando TEST5. Grabo. | ||
+ | 5 TEST1 | ||
+ | 5 TEST2 | ||
+ | 3 TEST3 | ||
+ | 1 TEST4 | ||
+ | 2 TEST5 <-- no la elimina | ||
+ | |||
+ | Bien, ¿se puede concluir algo? | ||
+ | El único momento exitoso se dio cuando se usó una FST reducida, y se volvió al | ||
+ | problema cuando se restituyó la FST original. Pero, tanto a la ida como a la | ||
+ | vuelta, fue necesario hacer dos operaciones de grabación para ver el efecto. | ||
+ | |||
+ | Vamos a probar algo similar, pero tocando ahora el script grabar.xis, y no la FST. | ||
+ | Volvemos desde el comienzo, y vamos a usar una FST vacía en la segunda grabación. | ||
+ | |||
+ | **** | ||
+ | |||
+ | Edito 000100. | ||
+ | TEST1. Grabo. | ||
+ | Edito. TEST2. Grabo. | ||
+ | 2 TEST1 <-- 1 fantasma | ||
+ | 1 TEST2 | ||
+ | Edito. Borro TEST2. Grabo. | ||
+ | 3 TEST1 <-- 2 fantasmas | ||
+ | 1 TEST2 <-- fantasma | ||
+ | |||
+ | Modifico grabar.xis: <parm name="fst"><pft>'0 0 /* nada */'</pft></parm> en la | ||
+ | 2da grabación. | ||
+ | |||
+ | Edito. Agrego TEST2. Grabo. | ||
+ | 4 TEST1 | ||
+ | 2 TEST2 | ||
+ | Sigue creando fantasmas. | ||
+ | |||
+ | Repito. | ||
+ | Edito. Agrego TEST3. Grabo. | ||
+ | 5 TEST1 | ||
+ | 3 TEST2 | ||
+ | 1 TEST3 | ||
+ | Sigue agregando fantasmas. | ||
+ | | ||
+ | Por lo tanto, la FST usada en la segunda grabación no tiene influencia. | ||
+ | |||
+ | **** | ||
+ | |||
+ | Probemos de nuevo. Ahora, suspendamos completamente la 2da grabación. Vuelvo las | ||
+ | bases y el grabar.xis a su versión original. | ||
+ | |||
+ | El problema sigue presente. | ||
+ | |||
+ | Ahora, dejando el grabar.xis mutilado, cambio la FST por la corta. | ||
+ | Primer intento: sigue el problema. Segundo intento: se soluciona. | ||
+ | |||
+ | Vamos entonces a dejar el grabar.xis en su estado original. Sigue OK! | ||
+ | |||
+ | **** | ||
+ | |||
+ | Repitamos todo desde el vamos, usando directamente la FST corta con una | ||
+ | fresh install. Se ve bien; en el paso 1 agrego TEST1, en el paso 2 TEST2, y | ||
+ | aparece esto: | ||
+ | |||
+ | 1 TEST1 | ||
+ | 1 TEST2 | ||
+ | |||
+ | Borro TEST2, y veo: | ||
+ | |||
+ | 1 TEST1 | ||
+ | |||
+ | Agrego TEST3, borro TEST2: | ||
+ | |||
+ | 1 TEST1 | ||
+ | 1 TEST3 | ||
+ | |||
+ | ----- | ||
+ | |||
+ | Pruebas con la FST truncada. | ||
+ | |||
+ | Elimino la parte inicial, dejo a partir de "Titulos (por palabras)", y anda bien. | ||
+ | Empezamos a añadir la parte borrada, de a poco. Son 10 bloques. | ||
+ | |||
+ | Añado "Tipo de material" y "Fecha". Anda bien. | ||
+ | |||
+ | Añado "Idiomas, traducciones". Anda bien. | ||
+ | |||
+ | Añado "Numeros normalizados". Anda bien. | ||
+ | |||
+ | Añado "Otra informacion codificada" y "Lugar de publicacion". Falla! | ||
+ | |||
+ | Quito "Lugar de publicacion". Anda bien! | ||
+ | |||
+ | Sospechoso: "Lugar de publicacion": | ||
+ | |||
+ | 9260 4 proc('d1000a1000¦',replace(v260*2,'^','¦a1000¦'),'¦'), ( if 'ae' : v1000.1 then v1000*1/ fi ) | ||
+ | 9260 4 ref(['COUNTRY']l(['COUNTRY']replace(replace(v008*15.3,'#',''),'_','')),v2) | ||
+ | |||
+ | ¿Será por el ref? | ||
+ | |||
+ | Vuelvo a poner "Lugar de publicacion", pero comentando la línea del ref. Anda bien! | ||
+ | |||
+ | Sospechoso: el ref(). | ||
+ | |||
+ | Ahora pongamos la FST original entera, sin el ref. Anda OK! :-) | ||
+ | |||
+ | Próximo paso: minimal test case. Una FST bien simple que presente el problema. | ||
+ | |||
+ | |||
+ | {{tag>catalis desarrollo}} |