Consulta sobre Wxis

14 views
Skip to first unread message

Lourdes Chac�n Saavedra

unread,
Mar 26, 2008, 12:06:48 PM3/26/08
to cat...@googlegroups.com
Buen día a todos
 
Estoy elaborando una interfase de búsqueda con Wxis, hice los scripts, pero tengo algunos problemitas....uno de ellos es que no puedo buscar información por campos (titulo, autor, tema) solo esta buscando por todos los campos...la verdad no sé que hacer...ya que no tengo mucho conocimiento del tema...solo me estoy basando en algunos apuntas que tengo...para que me puedan ayudar mejor les envio mi scripts
 
<do task=search>
<parm name=db>fa08</parm>
<parm name=gizmo>gizmo</parm>
<parm name=from><pft>if a(v1004) then '1' else v1004 fi</pft></parm>
<parm name=count><pft>v1005</pft></parm>
<parm name=reverse>On</parm>
<parm name=expression><pft>
IF v3005='Todos' THEN v140 ELSE
   IF v3005='Autor' THEN v140,'/(40)' ELSE
      IF v3005='Fuente' THEN v140,'/(50)' ELSE
 IF v3005='Titulo' THEN v140,'/(20)' ELSE
          IF v3005='Entrevistado' THEN v140,'/(70)' ELSE
            IF v3005='Tema' THEN v140,'/(80)' FI FI FI FI FI FI
</pft></parm>
<field action=define tag=1001>Isis_Current</field>
<field action=define tag=1002>Isis_Total</field>
<field action=define tag=1009>Isis_ErrorInfo</field>
<field action=define tag=1022>Isis_Keys</field>
 
Espero me puedan ayuda
Gracias
 

Lourdes Ch.

filoquin

unread,
Mar 26, 2008, 2:04:14 PM3/26/08
to cat...@googlegroups.com
A simple vista lo que veo es que no definís el campo 3005 (pude ser que
lo llames antes del task=seach, y por eso no esta).
¿Probaste la búsqueda con MX y te funciona?
¿regeneraste los archivos invertidos?
¿El archivo FST contienecon los campos 40,50,20, etc?


Lourdes Chac�n Saavedra escribió:

Fernando Gómez

unread,
Mar 27, 2008, 10:38:31 AM3/27/08
to cat...@googlegroups.com
2008/3/26 filoquin <filo...@gmail.com>:

> A simple vista lo que veo es que no definís el campo 3005 (pude ser que
> lo llames antes del task=seach, y por eso no esta).
> ¿Probaste la búsqueda con MX y te funciona?
> ¿regeneraste los archivos invertidos?
> ¿El archivo FST contienecon los campos 40,50,20, etc?

Supongamos que el campo 3005 está definido más arriba, y que contiene
una opción enviada desde el cliente con el tipo de búsqueda a
realizar.

Mis preguntas son las mismas de filoquin, agregando algún detalle más:

* ¿Podrías mostranos la FST que usaste para generar el invertido?

* ¿Qué apuntes estás usando? ¿Los que ofrece Bireme en su sitio web, o
tenés algún otro material?

* mx puede ayudarte a verificar que las búsquedas funcionan según lo
esperado. Por ejemplo (en el mismo directorio donde está la base de
datos):

mx fa08 "fulano/(40)"

De esa manera, podés separar los problemas propios de wxis, de
aquellos que tienen que ver con algún error en el archivo maestro o
invertido.

* Hay una forma de simplificar esa secuencia de varios
if-then-else-if... usando select-case-endsel, pero no es esencial, y
primero veamos si podés resolver el problema de las búsquedas.

Saludos.

--
Fernando

Lourdes Chac�n Saavedra

unread,
Mar 27, 2008, 12:01:26 PM3/27/08
to cat...@googlegroups.com
Gracias por su gran ayuda, disculpen la ignorancia pero no entiendo eso de generar el archivo invertido? y la búsqueda con MX?
...con respecto a los campos...40,50,20 si estan en la FST
y los apuntes que estoy usando son de Bireme y una persona me estaba ayudando, pero me dice que él tambien no sabe donde esta el error...puesto como dicen ustedes no hay mucha literatura al respecto y es por ello que recurro a este grupo por que siempre encuentro una respuesta a mis inquitudes
 
Como les comente no tengo mucho conocimieto sobre el tema, pero estoy tratando de hacerlo. Les adjunto el scripts que estoy elaborando
 
Otro problema que tengo este scripts es la visualización de los resultados...es decir yo quisiera que me salga los resultado 20 primeros registros, pero no se enque mal por que tampoco me sale
 
Espero me puedan ayudar,
Gracias
Lourdes
 
Adjunto el scripts

<display><pft>'Content-type: text/html'/#</pft></display>
<trace>BR</trace>
<field action=cgi tag=140>busqueda</field>
<field action=cgi tag=1004>proximo</field>
<field action=cgi tag=1005>cantidad</field>
<field action=cgi tag=3005>campo</field>
<field action=cgi tag=4000>conector</field>
<field action=replace tag=140 split=occ><pft>
if p(v4000) then replace(s(mpu, v140/),' ','*'), fi
</pft></field>
<parm name=cipar><pft>cat('idl.cip')</pft></parm>

<display><pft>'
<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Description" CONTENT="Base de datos de Noticias">
<title>Base de datos de la Biblioteca: Resultados de la B&uacute;squeda</title>
<style type="text/css">
<!--
A.link {color: 0000ff; FONT: bold 11pt arial; TEXT-DECORATION: none}
A.link:hover {COLOR: #0000ff; FONT: bold 13pt arial; TEXT-DECORATION: none}
A.visitado:hover {color: 000077; FONT: bold 12pt arial; text-decoration: none}
//-->
</style>
</head>
<body bgcolor=#ffffff>
<center>
<font face=arial size=+1><b>Resultados de la B&uacute;squeda</b></font><br>
</center>'
</pft></display>

<do task=search>
<parm name=db>fa08</parm>
<parm name=gizmo>gizmo</parm>
<parm name=from><pft>if a(v1004) then '1' else v1004 fi</pft></parm>
<parm name=count><pft>v1005</pft></parm>
<parm name=reverse>On</parm>
<parm name=expression><pft>
IF v3005='Todos' THEN v140 ELSE
   IF v3005='Autor' THEN v140,'/(40)' ELSE
      IF v3005='Fuente' THEN v140,'/(50)' ELSE
 IF v3005='Titulo' THEN v140,'/(20)' ELSE
          IF v3005='Entrevistado' THEN v140,'/(70)' ELSE
            IF v3005='Tema' THEN v140,'/(80)' FI FI FI FI FI FI
</pft></parm>
<field action=define tag=1001>Isis_Current</field>
<field action=define tag=1002>Isis_Total</field>
<field action=define tag=1009>Isis_ErrorInfo</field>
<field action=define tag=1022>Isis_Keys</field>


<!-- Este es el detalle de cada registro -->
<loop>
<display><pft>'
<center><hr noshade width=520 align=center size=2>
<table border=0 bgcolor="ffffcc" width=515 cellpadding=0 cellspacing=3 colspacing=0><tr>'

if p(v20) then '
<td valign=top align=left width=65><b>Titulo:</b></td>
<td align=left valign=center width=450><b>',v20,'</b></td>',fi,'</tr><tr>'


if p(v30) then '
<td valign=top align=left width=65><b>Noticia:</b></td>
<td align=left valign=center width=450><b>',v30,'</b></td>',fi,'</tr><tr>'

if p(v40) then '
<td valign=top align=left width=65><b>Autor:</b></td>
<td align=left valign=center width=450>',v40,'</td>',fi,'</tr><tr>'

if p(v50) then '
<td valign=top align=left width=65><b>Fuente:</b></td>
<td align=left valign=center width=450>',v50,'</td>',fi,'</tr><tr>'

if p(v60) then '
<td valign=top align=left width=65><b>Tipo:</b></td>
<td align=left valign=center width=450>',v60,'</td>',fi,'</tr><tr>'

if p(v70) then '
<td valign=top align=left width=65><b>Entrevistado:</b></td>
<td align=left valign=center width=450>',v70,'</td>',fi,'</tr><tr>'

if p(v80) then '
<td valign=top align=left width=65><b>Tema:</b></td>
<td align=left valign=center width=450>',v80,'</td>',fi,'</tr>

<tr><td valign=top align=left width=65><b>Registro:</td>
<td align=left valign=top width=450>',v1001,' de ',v1002,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Total de documentos encontrados: <b>',v1002,'</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="/buscar.htm"><b>Volver a buscar</b></a></td></tr></table></center>'

</pft></display>
</loop>

<!-- Mensaje cuando no se encontraron registros -->
<display><pft>if v1002='0' then '
<center><hr noshade width=520 align=center size=2>
<table border=0 bgcolor=ffffcc width=515 cellpadding=0 cellspacing=3 colspacing=0>
<tr><td valign=top><br><font face="arial">
No se encontr&oacute; informaci&oacute;n para el tema: <b>'mpu,v140,mpl'</b><p>
<b>Sugerencias:</b></font>
<ol type=i>
<li> Aseg&uacute;rese que ha escrito correctamente la(s) palabra(s).<p>
<li> Busque por el apellido del autor o alguna palabra en el t&iacute;tulo del libro. Para ello debe elegir la opci&oacute;n <tt><b>"Seleccionar campos"</b></tt>.<p>
<li> Amplie su b&uacute;squeda, usando la tecla <tt><b>$</b></tt>. Por ejemplo, si quiere saber todo lo que la biblioteca tiene sobre la <b>ciudadan&iacute;a</b>, escriba &nbsp;&nbsp;<tt><b>ciud$</b></tt>.<p>
<li> Llame al anexo del bibliotecario.
</ol>
<p>
<center>
<font face=arial><b><a href="/buscar.htm">Hacer una nueva b&uacute;squeda<a><b></font>
</center>
</td></tr></table></center>',fi
</pft></display>

<!-- formulario para solicitar los siguientes 20 registros -->

<display><pft>
if val(v1001)<val(v1002) then
'<center>'
'<form action="http://cendocidl/cgi-bin/wxis" method="post">'
'<input type="hidden" name="IsisScript" value="idl.xis">'
'<input type="hidden" name="campo" value="',v3005,'">'
'<input type="hidden" name="busqueda" value="',


IF v3005='Todos' THEN v140 ELSE

   IF v3005='Autor' THEN v140'/(40)' ELSE
      IF v3005='Fuente' THEN v140'/(50)' ELSE
         IF v3005='Entrevistado' THEN v140'/(70)' ELSE
            IF v3005='Tema' THEN v140'/(80)' FI FI FI FI FI,
'">'
'<input type="hidden" name="proximo" value="',f(val(v1001)+1,0,0),'">'
'<input type="hidden" name="cantidad" value="',v1005,'">'
'<input type="submit" value="Siguiente p&aacute;gina >>>">'
'</form></center>'
fi,
</pft></display>
</do>

<!-- Para crear el log de búsqueda -->
<file action=append type=output>/Archivos de programa/Apache Group/Apache/logs/logs.csv</file>
<display><pft>v140,',',if p(v3005) then v3005 fi, ','v1002,','s(date)*6.2'-'s(date)*4.2'-'s(date).4,/</pft></display>
<file action=close type=output>/Archivos de programa/Apache Group/Apache/logs/logs.csv</file>
</section>
</IsisScript>

filoquin

unread,
Mar 27, 2008, 12:59:25 PM3/27/08
to cat...@googlegroups.com
Bueno. A ver
MX es una aplicación para entre otras cosas buscar información  en bases cdisis. es también de bireme. La podes bajar de aca

http://bvsmodelo.bvsalud.org/php/level.php?lang=pt&component=28&item=1

Ahi mismo tenés una referencia en castellano. de com se usa. Pero copiando el archivo mx al directorio donde tenés las bases y realizando el procedimiento que te indico Fernando podes ver si la busqueda te da resultados. Si te da resultados el problema esta en el isisScript . Si no te da ningún resultado lo mas seguro es que el problema este en la generación del archivo invertido.

el archivo invertido es según bireme:
Archivo invertido. Conjunto de seis archivos físicos, cinco de los
cuales contienen los términos de búsqueda del diccionario
(organizados como un árbol B*) y el sexto contiene la lista de
apuntadores asociadas a cada término. A fin de optimizar el
almacenamiento en disco, se mantienen dos árboles B* por
separado: uno para los términos de hasta 10 caracteres
(almacenados en los archivos .N01 y .L01) y otro para los términos
de más de 10 caracteres (almacenados en los archivos .N02 y .L02).
El archivo .CNT contiene campos de control para ambos árboles
B*). En cada archivo del árbol B* el archivo .N0x contiene los nodos
del árbol y el archivo .L0x contiene las hojas. Los registros de las
hojas apuntan al lugar donde se encuentran los apuntadores que
contienen la información para localizar los registros (postings) en la
base de datos. Este archivo se identifica con la extensión .IFP.

En crilollo y  mi entender es algo así como un índice donde están contenidos los campos de la base indexados,
Luego de modificar un FST (un archivo de texto que indica los campos y el formato en que están indexados) tenes que regenerar este archivo.

Para esto podes usar un bat que es fullinv o hacerlo directamente con MX
mx db=nombreDeLaBase fst=@nombreDelFst fullinv=nombredelInvertido

por ejemplo para mi base reportes yo uso este

mx db=reportes fst=@reportes.fst fullinv=reportes

Igual te recomiendo que leas el PDF que hay en la pagina de bireme (la de arriba en este mail) porque hay mas opciones. Esa es una forma basica de hacerlo.
por ejemplo el fullinv incluido con catalis es algo asi
mx cipar=fullinv.cip db=%base gizmo=DICTGIZ fst=@BIBLIO.FST actab=AC-ANSI.TAB uctab=UC-ANSI.TAB stw=@BIBLIO.STW fullinv=biblio tell=500


Bueno espero que esto te sirva de ayuda
Saludos

Martin



Reply all
Reply to author
Forward
0 new messages