====== Claves fantasma en Catalis ======
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]].
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 Lock.
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:
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
por (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 en grabar.xis.
El problema sigue allí.
Reemplazo por '0 0 /* nada */'
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: '0 0 /* nada */' 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}}