Claves fantasma en Catalis

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'</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'</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.