User Tools

Site Tools


claves_fantasma

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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}}
claves_fantasma.txt · Last modified: 12/05/2009 00:00 (external edit)