Difference between revisions of "Cisis"

From ABCD Wiki
Jump to: navigation, search
Line 96: Line 96:
 
   "proc='d10<10 99 1>bla bla <xxx xxx xx x> bla bla <xxxx xxx> bla bla</mark></10>'" crea el tag 10 con "bla bla  bla bla  bla bla"
 
   "proc='d10<10 99 1>bla bla <xxx xxx xx x> bla bla <xxxx xxx> bla bla</mark></10>'" crea el tag 10 con "bla bla  bla bla  bla bla"
 
     99 = largo maximo de las marcas <>
 
     99 = largo maximo de las marcas <>
     1 = largo minimo resultante para crear el campo 10  
+
     1 = largo minimo resultante para crear el campo 10
  
 +
Ejemplo
 +
  s1:=s(cat\... una página web completa)
 +
  "proc='d10<10 500 1>',s1,'</mark></10>'"    (extrae hasta 500 chars entre los delimintadores <...> )
 +
  fst=10 4 v10
  
 
== Compilación ==
 
== Compilación ==

Revision as of 08:48, 29 April 2019

Indización

Memoria en técnica 4

Parámetros para aumentar la capacidad de memoria para poder indizar por palabra sin tener overflow en el DIR del registro virtual y aumentar la memoria de PFT

 mx mfrl=64000 fmtl=64000 textosdb maxlk1=<pongaelmaximodepalabrasquevaagenerareltextomaslargo> maxlk2=<creaoqueyaessuficienteperotambienpuedesespecificarlo> fst=@ fullinv=textosdb

meaning of invx

M/F con campo repetitivo 101. ^p es prefijo para la busqueda; ^y es el I/F que corresponde.

Ej: si tienes cdsti con las palabras del titulo, cdsau con los autores, cdskw con las keywords [root@dis-tardelli ~]# mx null "proc='a101|^p*^ycdsti|a101|^pTI ^ycdsti|a101|^pAB ^ycdsau|a101|^pAU ^ycdsAU|a101|^pKW ^ycdskw|'" count=1 now create=cds.invx

 mfn=     1
 101  "^p*^ycdsti"
 101  "^pTI ^ycdsti"
 101  "^pAB ^ycdsau"
 101  "^pAU ^ycdsAU"
 101  "^pKW ^ycdskw"

entonces:

 mx cds invx=cds.invx "bool=plants and water" busca em cdsti
 mx cds invx=cds.invx "bool=TI plants and TI water" idem
 mx cds invx=cds.invx "bool=[TI]plants and water" idem
 mx cds invx=cds.invx "bool=TI plants and TI water and AU Magalhaes and KW whatever" busca em los indices indicados por esos prefijos

btw, el iah.xis convierte las entradas INDEX y FILE para un registro con los campos 101 que es pasado a la función de busqueda del CISIS!

indexing technique 351

IT 351 es una extension de la FST para preparación de MEDLINE. Procesa el campo MeSH Headings: extrae descriptor, descriptor + calificador y calificador. Tuve que investigar el fuente (kkk).

 Ej: [root@dis-tardelli ~]# mx null "proc='a10|Abstracting and Indexing as Topic/MT*|a10|Information Storage and Retrieval/SN*/MT|'" "fst=1 
351 (v10/)"mfn=     1
 10  "Abstracting and Indexing as Topic/MT*"
 10  "Information Storage and Retrieval/SN*/MT"
  1  "ABSTRACTING AND INDEXING AS TOPIC^m1^o1^c1^l2"
  1  "ABSTRACTING AND INDEXING AS TOPIC/MT*^m1^o1^c1^l2"
  1  "/MT*^m1^o1^c1^l1"
  1  "INFORMATION STORAGE AND RETRIEVAL^m1^o1^c2^l2"
  1  "INFORMATION STORAGE AND RETRIEVAL/SN*^m1^o1^c2^l2"
  1  "/SN*^m1^o1^c2^l1"
  1  "INFORMATION STORAGE AND RETRIEVAL^m1^o1^c3^l2"
  1  "INFORMATION STORAGE AND RETRIEVAL/MT^m1^o1^c3^l2"
  1  "/MT^m1^o1^c3^l1"
 ..x

Filtrar caracteres

Solicitud: a function 'keepac()' to only keep the characters defined in actab, allowing e.g. easier construction of unique keys (as we need in RDA) by dropping all non-alphanumeric characters of a string, e.g. interpunction, spaces...

Respuesta: preparar un gizmo con dos tipos de entradas?

   caracter a mantener|caracter a mantener 
   caracter a borrar|

y entonces usarlo en una "proc='Gesegizmo,tagquequieretransformar'" el MX o, eventualmente, en una especificacion de formato

   proc('Gesegizmo,tagquequieretransformar') 

Warning: nunca usar un gizmo diretamente en el formato de una FST; aplicar gizmo en el dato y despues extraer las llaves


Parámetros

tmpx

Si especificado, es el M/F donde la función de busqueda del CISIS va a crear los resultados de las busquedas. Eso permite usar expresiones meszlando términos con los resultados anteriores o solo esos, como (#1 or #2 or #3) and spinak


gizp[/h]

Descontinuado. Indicaba un M/F para generar los cambios de datos realizados por un gizmo=. Creo que fue usado para conocer la compresion de datos que haciamos con MEDLINE para publicarlo en CDROM

jdi

Implementacion del algoritmo Journal Descriptor Indexing de la NLM. Fue usado para hacer un ranking de registros LILACS según los Journal Descriptors de las revistas donde fueron publicados


proc= Gmark or Gmarx

proc=Gmark hace el markup ("sensibilación" o highlight) de un texto.

El browser del DeCS (decs.bireme.br?) despliega los registros ya sensibilizados (vea http://decs.bvsalud.org/cgi-bin/wxis1660.exe/decsserver/?IsisScript=../cgi-bin/decsserver/decsserver.xis&search_language=i&interface_language=p&previous_page=homepage&task=exact_term&search_exp=Chagas%20Disease)

proc=Gmarx

es para parsing de elementos XML.

Fue el "medio de produccion" que he utilizado para sobrevivir a la introduccion de XML en BIREME. BTW, recibiamos MEDLINE en XML y la conversion a ISIS necesitaba ser procesada en un PC porque ahi teniamos un utilitario de conversion. Con proc=Gmarx (que en verdad no es tan generica asi) pude cargar MEDLINE, Cochrane y otras bases desde XML.

proc=X[append]

proc=if condition then 'Xxxx' fi" graba el registro corriente al master xxx


Lenguaje de Formateo

Striptags

formatting language function 'striptags()' to drop all HTML- or XML-tags in a string

 "proc='d10<10 99 1>bla bla <xxx xxx xx x> bla bla <xxxx xxx> bla bla</mark></10>'" crea el tag 10 con "bla bla  bla bla  bla bla"
   99 = largo maximo de las marcas <>
    1 = largo minimo resultante para crear el campo 10

Ejemplo

 s1:=s(cat\... una página web completa)
 "proc='d10<10 500 1>',s1,'</mark></10>'"    (extrae hasta 500 chars entre los delimintadores <...> )
 fst=10 4 v10

Compilación

=== how to compile CISIS for Windows 64-bits ? === (Borland 5.2 is only 32-bits) probar un GCC para Windows, Mirá al GCC para Windows: http://mingw-w64.org/doku.php Hay que investigar ese punto, pues yo tambien quisera usarlo en Windows 64-bits.

=== adjusting CISIS to be used in a modern IDE === (Visual Studio, Netbeans, Code:Blocks...) AOT: Btw, me acuerdo que el viejo CISIS ya fue compilado en Microsoft C something.

Special truncation to LE2 length

Egbert: we need to manipulate (special truncation to LE2 length), in cifst.c, the string to be passed on for insertion in the to IF B-Tree (fst_link()); we have a function to perform that manipulation and it works well when tested on the screen (the test-mode by only showing the extracted keys, e.g. 'mx mydb fst=@') but when doing the real indexing (mx mydb fst=@ fullinv=mydb now -all) the string again appears as before the function was called. So where to insert that function right before the insertion to avoid that subsequent memcp and other functions undo the manipulation ?

AOT: Pls, provide a real example (data, fst, everything to reproduce it)