[Isis-users] Pregunta acerca de los números de la búsqueda

Ernesto Spinak spinaker at adinet.com.uy
Thu Dec 23 20:56:29 CET 2010



Renata

enviame a mi correo personal (no es necesario a la lista) un archivo  .zip con algunos registros
envia una descripción de cómo quieres indizar los campos de números, o sea las claves que deseas extraer. Puedes ser ambiciosa, envía todas las formas que te gustaría poder indizar, si te parecen formas "locas" no te preocupes, con CISIS es posible hacerlo.
Luego yo enviaré la solución (con copia también a la lista, asi todos pueden aprovechar)

Saludos

Ernesto Spinak

 

 

----Mensaje original----
De: rlm at modalnetworks.com
Fecha: 23/12/2010 15:08 
Para: "Ernesto Spinak"
CC: 
Asunto: Re: [Isis-users] Pregunta acerca de los números de la búsqueda


    
  Hola Ernesto, como estas?

Su sugerencia trabajado, en parte.
He añadido estas líneas en la fst:

60 0 if p (v60), then 'NP_', v60 fi
60 0 if p (v60), then 'TW_', proc (' GSplit = 60 =. ') (v60 /) fi

El que mantiene el comando "replace" no funcionó, se muestra el error en tiempode revertir.
De esta manera he podido encontrar, pero sólo los números después del punto.
He intentado editar un registro para entrar en el "." antes de que todos los números. Porejemplo, .85.45.69, pero al hacerlo, el registro entero es un desastre, las líneas sondesplazados no saben lo que pasó.

Cuando se trata de editar otro disco (supongo que he añadido el número 85.45.69), el mensaje de error siguiente aparece:

WXIS | execution error| field| D1001 |

Y al final, lo fue. La búsqueda de trabajo sólo para los registros existentes, pero no he podido editar e insertar uno nuevo que cualquiera de los errores anteriores se produjeron ...

Espero que puedan ayudarme!

Gracias y Felices Fiestas a todos!




A:link { text-decoration: none}
A:visited { text-decoration: none}








--

Atenciosamente,


Renata Lopes Melo


Analista de Suporte


Tel: +55 (11) 5587-3674


Tel: +55 (11) 3798-1531


Email: rlm at modalnetworks.com




 Antes de imprimir pense em sua responsabilidade e compromisso com o Meio Ambiente. 
Em 20/12/2010 18:17, Ernesto Spinak escreveu: 
Estimada Renata

(Favor que alguien traduzca la inglés pues no tengo tiempo en este momento)

La indización estándard de ISIS por técnicas 4 y 8 recupera cadenas de caracteres (strings) formadas por los caracteres definidos en la una tabla isisac.tab

La tabla por defecto del Isis considera palabra a cualquier string de caracteres solamente alfabéticos.
Esto significa que los números, espacios en blanco y caracteres tipográficos dividen las cadenas en "palabras". 
El problema se plantea en la definición de "palabra".

Algunas soluciones que se han ofrecido es incluir los números en la lista isisac.tab, entonces también son incluídos como "palabras. Pero esta solución es bastante limitada. Por ejemplo tenemos el caso que plantea tú planteas y que Alisson informa correctamente que no ha funcionado.

Ella tiene un número 12589.569 y como el punto (.) es separador, entonces se generan dos claves
12589 y 569

Lo mismo ocurriría si tuviéramos códigos como los expedientes o las leyes 10.751/12, Decreto 987/2010

De modo que la modificación del isisac.tab no resuelve el tema completamente, incluso "ensucia" el archivo invertido cuando indiza campos donde hay números y no queremos que éstos se indicen. 
Una solución "limpia" viene por otra vía.

Para eso CISIS usa los procs( ), que además de ser un parámetro del MX también es una instrucción del formato.

Problema:
tenemos los siguientes valores y queremos generar los siguientes índices

a)  12589.569 -->  12589.569    12589569   12589   569
b)  1234/001  -->  1234/001     1234       001

supongamos que estos valores están en el campo 590, entonces

Todas estas variantes de los números son necesarios para que el usuario en la consulta "tipo google" del IAH pueda recuperar los valores indistintamente si usa puntos o barras o si no los usa
Presentamos en forma simple y didáctica, paso a paso, pues las instrucciones siguientes pueden optimizarse en líneas más compactas

Ejemplo (a)
590 0 if p(v590) then 'TW_', v590 fi
590 0 if p(v590) then 'TW_', replace(v590),'.','') fi
590 0 if p(v590) then 'TW_', proc('Gsplit=590=.') (v590/)

Ejemplo (b)
590 0 if p(v590) then 'TW_', v590 fi
590 0 if p(v590) then 'TW_', proc('Gsplit=590=/') (v590/)

también es posible extraer los números de un texto usando  proc('Gsplit/clean=<tag>,numbers')
hay muchas opciones que no son usadas pero muy eficientes para indizar

Con tiempo daremos otros ejemplos. 
El comando proc( ) es indispensable para hacer FST realmente avanzadas

Saludos
Ernesto Spinak









-- 
  .^.                                .^.
  ( )                                ( )
  ===                                ===
 =[=]================================[=]=
  | |  Ernesto Spinak                | |
  | |  spinaker at adinet.com.uy        | |
  | |  Montevideo, Uruguay           | |
  | |  tel/fax  (5982) 622-3352      | |
  | |  celular  (598)  99612238      | |
 =[=]================================[=]=
  ===                                ===
  ( )                                ( )
   V                                  V 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.iccisis.org/pipermail/isis-users/attachments/20101223/d5ddc976/attachment.htm>


More information about the isis-users mailing list