| ||||
Sistema de Archivos Hola foro, diganme como pueden hacer una busqueda de archivos en el servidor: como en esta web http://biblioteca.abaco.edu.pe/view.asp. La bùsqueda esta hecha, mi duda esta al momento de empaginar los resultados ah y leer los archivos word u otros para colocar una pequeña descripción Última edición por tomchat; 23/11/2005 a las 16:20 |
| ||||
Al Zuwaga , eso mismo pense yo pero no es haci, ellos toman todo esto de los directorios del servidor. Me he matado programando lo búsqueda pero esta no serviria sin la descripción y el empaginamiento de resultados. En este link muestran los directorios del servidor. http://biblioteca.abaco.edu.pe/siteman.asp |
| |||
tomchat eso se hace usando Index Server; en donde se configura un Catalogo que contendra todos los directorios a indexar del Sitio.... el Index Server es otro servicio que se debe levantar y configurar para que funcione.... despues que esta listo , por IIS en cada carpeta que se desee sea indexada se marca la opcion de indexar.... En ASP se usan estos objetos que te indico mas abajo y otras cosas mas para obtener lo que muestra ese sitio que viste..... como por ejemplo la paginacion y los detalles de cada archivo. set Q = Server.CreateObject("ixsso.Query") set util = Server.CreateObject("ixsso.Util") Q.Query = CompSearch Q.SortBy = "rank[d]" Q.Columns = "DocTitle, vpath, filename, size, write, rank" Q.MaxRecords = 300 Se pueden hacer cosas muy buenas y practicas con esto.... me toco usarlo en varios sitios ; el mas complejo fue un Sistema de Gestion Documental que ademas, aparte de poder permitir busquedas simples, complejas y compuestas muestro el esquema de directorios como un arbol dinamico.... |
| ||||
OK monkyta te entiendo pero donde consigo este servicio y como lo configuro. Yo hice este codigo para buscar archivos en un directorio determinado. Lo que me faltaria es extraer una descripcion de cada archivo con los .txt no hay problema pero con otro tipo de archivos si como los .doc. AH y empaginar los resultados por ejemplo mostrar 10 archivos por pagina. <html> <head> <title>Paging</title> </head> <body background="images/bgfondo.jpg" topmargin="0" leftmargin="5"> <%Dim objFSO , objFolder , SubFolders , objFile, objTextStream, strFileContents, bolFileFound , buscar Const fsoForReading = 1 buscar = request.querystring("buscar") Set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(Server.MapPath("Archivos")) ruta=objFolder & "\" Set SubFolders = objFolder.SubFolders response.write ruta bolFileFound = False %> <table width="762" border="0" align="center" cellpadding="2" cellspacing="1" height="199"> <tr bgcolor="#EEEEEE"> <td colspan="4" height="16" width="756"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <div align="left"><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="bluet"> <img border="0" src="images/Arrow.gif" width="12" height="12"> <strong>Resultados Búsqueda Archivos</strong></font></div> <div align="center"></div></td> </tr> </table> <div align="center"></div> <div align="left"></div> <div align="center"> </div></td> </tr> <tr bgcolor="#CCCCCC" class="greyt"> <td colspan="4" height="1" width="756"></td> </tr> <tr bgcolor="#EEEEEE" class="greyt"> <td colspan="4" height="16" width="756"><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif"> Resultados 1 - 10 Registros <b><%=sProjectCount%></b> de <b><%=buscar%></b> </font> <div align="center"></div></td> </tr> <%x=0 For Each objFolder1 in SubFolders ' objfolder ruta raiz , folder o carpeta principal ' objFolder1.name & "<br>" subcarpetas o subdirectorios For Each objFile in objFolder1.Files ' objFile archivo If Response.IsClientConnected then Set objTextStream = objFSO.OpenTextFile(objFile.Path,fsoForReading) contenido= objTextStream.Read(200) & "..." strFileContents = objTextStream.ReadAll on error resume next subfolder=objFolder1.name file=objFile.Name 'ruta1=ruta & subfolder & "\" & file ruta1=subfolder & "\" & file If InStr(1,strFileContents,buscar,1) then ruta1 = replace((ruta1),"\", "/") ruta1 = "administrador/archivos_administrador/docuemntos_informacion/" & ruta1 ru="http://www.piura.abaco-corp.edu.pe/biblioteca/" 'response.write ruta1%> <tr> <td colspan="4" bgcolor="#FFFFFF" height="1" width="756"> <A HREF="<%=ruta1%>" target=new><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif"><u><%=file%></font></A> </td> </tr> <tr> <td colspan="4" bgcolor="#FFFFFF" height="1" width="756"> <font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=contenido%></font> </td> </tr> <tr> <td colspan="4" bgcolor="#FFFFFF" height="1" width="756"> <font color="blue" size="2"><%=ru & ruta1%></font> </td> </tr> <tr> <td colspan="4" bgcolor="#FFFFFF" height="1" width="756"> </td> </tr> <%fich.close() bolFileFound = True End If objTextStream.Close End If Next Next%> <tr> <td colspan="4" bgcolor="#FFFFFF" class="sgrey" height="23" width="756"><div align="right"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#EEEEEE"> <td width="29%" height="23"> <div align="left" class="greyt"><font size="2">Total: <%=sProjectCount%></font></div></td> <td width="71%"><div align="center"> <% Dim queryPageOn queryPageOn = Request.QueryString("page") If NOT isNumeric(queryPageOn) AND NOT sStartQuery = "0" then queryPageOn = "1" End If queryPageOn = CINT(queryPageOn) Response.Write(sProjectPrev & " ") Dim iPages, iPagesTemp For iPages=1 to intPages iPagesTemp = iPages-1 If NOT queryPageOn=iPages then%> <a href='?buscar=<%=buscar%>&opcion=<%=opcion%>&start =<%=iPagesTemp*intRecordsPerPage%>&page=<%=iPages% >' class='elinks'><%=iPages%></a> <%Else Response.write "<span class='greyt'>[</span><a href='?buscar=" & buscar & opcion=" & opcion & "&start=" & iPagesTemp*intRecordsPerPage & "&page="& iPages & "' class='elinks'>" & iPages & "</a><span class='greyt'>]</span> " End If Next Response.Write(" "&sProjectNext) %> </div></td> </tr> </table> </div></td> </tr> <%if Not bolFileFound then%> <tr> <td bgcolor="#FFFFFF" height="18" width="685"> <p align="center"> <font color="#003366" face="Verdana, Arial, Helvetica, sans-serif" size="2">Su Búsqueda - <b><%=buscar%></b> - No Produjo ningún Resultados. </font></td> <td width="63" bgcolor="#FFFFFF" height="18"><div align="center"></div></td> <td bgcolor="#FFFFFF" height="18" width="6"> </td> </tr> <tr> <td colspan="2" height="79" width="753"> <TABLE border=0 bgcolor="#FFFFFF" width="749" height="101" cellSpacing=0 cellPadding=0> <TR> <TD class="textocelda" height="28"> <ul> <u>Sugerencias</u>: <li>- Verifique de que las palabras introducidas estén escritas correctamente. <li>- Intente usar otras palabras similares. <li>- Intente usar palabras más generales. </ul> </TD> </TR> </td> <%End IF 'arhivos de un directorio 'Set fileList = objFolder.Files 'For Each i in fileList 'response.write i.name & "<br>" 'next Set objTextStream = Nothing Set objFolder = Nothing Set objFSO = Nothing Set SubFolders = Nothing %> </table> </td> </tr> </table> </body> </html> |
| |||
El Servicio de Index Server (cisvc) viene incluido en XP PRO y Windows 2000... puedes ir a Servicios y verificar si esta iniciado o lo tienes detenido.... Hay bastante documentacion en la web de este Servicio; es poco usado pero es bastante util para hacer sistemas de gestion documental.... existe todo un lenguaje de consultas que puedes usar.... Por ejemplo usando esto puedes obtener toda la inforrmacion de un archivo en particular set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionTimeout=10 conn.ConnectionString = "provider=msidxs;" conn.Open SQL = "SELECT FileName, DocTitle, Size,Create, Write, Access, DocAuthor,DocKeywords,Characterization from edms..SCOPE('" & cope & "') where size > 0 " titulo= "Nombre,Título,Tamaño(bytes),Fecha Publicación,Fecha Ult. Modificación,Fecha Ult. Acceso,Autor,Palabras Clave,Resumen" set rs = conn.execute(SQL) donde edms se llama mi catalogo Para imprimir el resumen de un archivo usé esto <td valign=top class="justificado"> <%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%> <b><i>Resumen: </I></b><%= Server.HTMLEncode(RS("characterization"))%> <%end if%> </td> en donde el parametro characterization trae el resumen que se muestra por archivo en la respuesta de alguna busqueda Espero te sirva lo explicado para que te hagas una pequeña idea de lo que se puede hacer con el Index Server desde ASP |
| ||||
monkyta, nunca usé IndexServer aunque sabía que se usaba para estos casos. Mi pregunta, ya que tenés experiencia con éste servicio es si dá la posibilidad de "categorizar" documentos. Se me ocurre al vuelo que la mejor manera de categorizarlos es armando una estructura de carpetas en donde cada carpeta será una categoría.. pero ¿qué ocurre cuando un documento entra en más de una categoría? Pregunto porque hace unos días terminé un sistema documental (similar al que descrivo en mi anterior mensaje) y, supongo, el único beneficio que traería el uso de IndexServer es que permitiría busquedas full-text en cada documento. Gracias por tu respuesta
__________________ ...___... |
| ||||
Cita: PODRIAS REGALARME TU CODIGO COMPLETO????
Iniciado por monkyta set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionTimeout=10 conn.ConnectionString = "provider=msidxs;" conn.Open SQL = "SELECT FileName, DocTitle, Size,Create, Write, Access, DocAuthor,DocKeywords,Characterization from edms..SCOPE('" & cope & "') where size > 0 " titulo= "Nombre,Título,Tamaño(bytes),Fecha Publicación,Fecha Ult. Modificación,Fecha Ult. Acceso,Autor,Palabras Clave,Resumen" set rs = conn.execute(SQL) donde edms se llama mi catalogo Para imprimir el resumen de un archivo usé esto <td valign=top class="justificado"> <%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%> <b><i>Resumen: </I></b><%= Server.HTMLEncode(RS("characterization"))%> <%end if%> </td>
__________________ JuanRa Pérez San Salvador, El Salvador |
| |||
Al : Es correcto lo que dices que para el Servidor una Carpeta corresponde a una Categoria; lo que yo hice fue usar varios componentes; no solo el Index Server; como es el caso del FSO, ADSI, Filtros ISAPI, etc.... La forma en que trabaja este sistema es la de tener Categorias Publicas y Categorias Privadas; en donde todas las Categorias que son Publicas contienen informacion que puede ser vista por todos los usuarios del sistema y las Privadas; solo pueden ser accesadas segun el perfil del usuario que tiene definido en el Sistema... por lo tanto ; cuando un documento se requeria en mas de una categoria ; habian 2 opciones; se dejaba solo en una carpeta publica o bien se publicaba el documento en las categorias correspondientes..... El Sitio se accesaba usando Seguridad Basica; por cuanto, al ingresar al sistema, se le extraia inmediatamente el perfil y con este todas las categorias que tenia acceso.... una vez obtenidas todas las categorias; el sistema permite lo siguiente: recorrer todas las categorias a traves de un arbol dinamico; en donde se van viendo cada uno de los archivos; y el usuario por el nombre puede proceder a verlo; o bien; el sistema da la opcion de buscar algun string , frase, oracion, en alguna de las busquedas que podian ser: busqueda simple (se usa la busqueda fuzzi), busqueda compleja, o busqueda compuesta.... Las busquedas se hacen a archivos MS Office; PDFs, ZIP, DWG, etc.... en realidad, se pueden realizar busqueda de contenidos, por autor, por fechas publicacion, por tipo de archivo, por palabras claves, etc en todas esas extensiones........ Tambien tiene la posibilidad de mostrar a los usuarios las novedades.... esto quiere decir que el sistema tiene una opcion que muestra por Categoria todos los documentos que se han publicado en los ultimos 30 dias.... Ademas, el sistema cuenta con un sistema de administracion general que permite crear usuarios, asignar perfiles, asignar categorias, asignar un administrador, ver usuarios en linea, cambiar password, eliminar perfiles o usuarios, reasignar administrador, etc... aparte tambien, tiene un sistema de administracion para cada perfil; es decir, si es Administrador, el puede mover carpetas completas, backupearlas, eliminar carpetas o archivos, publicar documentos, revisar solicitudes de modificacion de documentos publicados, etc, etc y si es un usuario de perfil visualizador, entonces puede ver su perfil, ve que categorias tiene acceso, puede cambiar su password, etc. Ademas, el Sistema trabaja con SQL Server o con ASE Sybase.... esta para ambos motores........ aca existe un modelo completo con informacion de los usuarios, historial de los documentos, informacion de los administradores, etc etc..... Eso es mas o menos lo que hace este Sistema de Gestion del Conocimiento |
| ||||
Gracias MOnkyta voy a investigar sobre el Index Server (cisvc), una pregunta tu dices que este servicio trabaja con SQL Server, pero yo estoy trabajando con MYSQL, este sistema trabaja con MY... o no. Ah otra cosa como creo mi catalogo Última edición por tomchat; 23/11/2005 a las 16:21 |
| |||
No... el MS Index Server trabaja con el IIS; lo que pasa es que yo uso SQL Server o Sybase para guardar datos del sistema en base de datos... Aca va el procedimiento para crear un catalogo CREANDO CATALOGO EN MS INDEX SERVER 1. El Sitio a indexar siempre debe tener marcado la opción Indizar este recurso en Tabfolder Directorio particular (si se saca esta opción después de haberla tenido lo que ocurrirá es que el Catálogo quedará pelado … sin Directorios…. Es obligatorio que esta marca a nivel de Directorio raíz JAMAS se saque) 2. Se deben desmarcar la opción Indizar este recurso a todas las subcarpetas que no se deseen que se indexen 3. En el Directorio que corresponde al Sitio a Indexar en las Propiedades de la Carpeta revisar que en la opciones avanzadas que esté marcado Permitir al Servicio de Index Server indizar esta carpeta para acelerar la busqueda (si se olvida hacer esto nunca se indexará NADA) 4. En Disco donde se desee que quede el Catálogo e Indices se deberá crear un Directorio para mantenerlo Ej. c:\IXXNET 5. Por Administración de Equipos ir a Servicios y Aplicaciones Servicio de Index Server dar click derecho y seleccionar Nuevo Catalogo Parámetros a ingresar : Nombre del Catálogo Ej. docum Ubicación c:\iixdoc Seguimiento Seleccionar Sitio a Indizar (no marcar nada más) Generación Marcar Indizar arch. Con exten. Desconocidas Marcar Generar resúmenes y dar un tamaño máximo de caracteres 6. Una vez creado el Catálogo se debe Botar y Subir el Servicio de Index Server (se puede hacer directo desde Administración de Equipos; o también por comando DOS net stop CISVC (para bajar Servicio) y net start CISVC (para subirlo) 7. Ahora para cambiar la ubicación de default del Catálogo por el nuevo se debe editar el Registro (regedit) y modificar lo siguiente : (si esto no se hace cualquier búsqueda entregará el mensaje No existe catalogo) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\ContentIndex ISAPIDefaultCatalogDirectory REG_SZ c:\IXXDOC 8. Si en las Búsquedas se necesita que aparezcan los distintos directorios como entradas particulares también se debe modificar el registro para cambiar una clave del valor cero(0) a uno (1) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\ContentIndex FilterDirectories REG_DWORD 1 9. Si en el Servidor donde se aloja el Index Server se necesita que indexe cualquier documento publicado en forma inmediata se debe hacer lo siguiente : Para Servicio de Index Server En Servicio de Index Server (que está detenido) click derecho y seleccionar Todas las tareas Optimizar el rendimiento seleccionar RadioButtom Personalizar y luego click en botón Personalizar luego en Indización pasarlo a Instantanea Subir Servicio de Index Server NOTAS : Si se desean excluir manualmente algunos directorios del ámbito es necesario ingresarlos como nuevos directorios y teniendo cuidado de marcar excluir del ambito Para revisar que esto está bien se debe editar el registro y consultar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\ContentIndex\Catalogs\nnet\Scopes Valores 3 son directorios no excluídos Valores 4 son directorios excluídos Para realizar indexación Full o Incremental sólo es necesario ir al Catálogo ; seleccionar opción Directorios y en ventana derecha dar click derecho y seleccionar Todas las tareas ; aparecen las 2 opciones Realizar Búsquedas de nuevo (completa) o Realizar una nueva Búsqueda (Incremental) Eso es |
| |||
1. Vas a Inicio --> clic en Panel de Control. 2. Ahora vas a Herramientas Administrativas --> Administración de equipos. 3. En el árbol --> Vas a Servicios y aplicaciones --> Luego a Servicio de Index Server. 4. En Servicio de Index Server --> click derecho y selecciona Nuevo --> Catalogo 5. Aca sigue con el procedimiento que te indique 6. Al final dice que el catalogo estara fuera de linea hasta que reinicies en servicio de index server....... das aceptar nomas Despues veras que el nuevo catálogo aparecera en Servicio de Index Server No debes olvidarte de realizar las cosas detalladas; ya que me hicieron sufrir mucho para que todo funcionara bien... no salen en ninguna parte.... son "papitas buenas" como se dice en Chile...... Espero que te funcione ya que despues viene la parte de programar en ASP; y eso es OTRO CUENTO..... dificil pero espectacular.... Suerte TOMCHAT |
| ||||
Monkyta gracias. Ya cree el catalogo y en el Index server hay un formulario para generar una búsqueda. Si no es mucho abusar, no se si tu puedes poner un codigo para generar una busqueda por que el codigo anterior genera errores. |
| |||
Trabajo con muchas variables y funciones por lo que te paso solo la parte mas importante dim i,categ,chkk,cope,j set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionString = "provider=msidxs;" conn.Open SQL = "SELECT filename from tucatalogovaaca..SCOPE(' SHALLOW TRAVERSAL OF ""/" & """') where size=0 " set RS = conn.execute(SQL) categoria="" do while Not RS.EOF proy = rs("filename") if proy = "img" or proy = "home" or proy = "admin" or proy = "css" then rs.movenext else categoria= categoria & proy rs.movenext if not rs.eof then categoria= categoria & "," end if end if loop categorias=split(categoria,",") ncategorias=Ubound(categorias) Esta linea if proy = "img" or proy = "home" or proy = "admin" or proy = "css" then es para que no me busque en directorios que no deseo ..... la busqueda SHALLOW TRAVERSAL atraviesa todos los directorios; no importando que no esten marcados en el Sitio.... es otra de mis "pillerias" Bueno, espero que puedas programarlo.... suerte |
| ||||
Hola monkyta, probe el coidgo que me diste pero no digo ningun resultado. Tengo algunas dudas no se si podras aclararmelas: filename se refiere al nombre del archivo, de esa manera va en la consulta. y al momento de recoger el valor. catnum..SCOPE, Ok catnum es mi catalogo, pero a que te refieres con ...Scope. Despues generas un ciclo repetitivo con la variabke(RS) que toma el valor de la consulta. Dices que proxy sea igual al campo filename ' Gracias por tu tiempo. dim i,categ,chkk,cope,j set conn = Server.CreateObject("ADODB.Connection") conn.ConnectionString = "provider=msidxs;" conn.Open SQL = "SELECT filename from tucatalogovaaca..SCOPE(' SHALLOW TRAVERSAL OF ""/" & """') where size=0 " set RS = conn.execute(SQL) categoria="" do while Not RS.EOF proy = rs("filename") if proy = "img" or proy = "home" or proy = "admin" or proy = "css" then rs.movenext else categoria= categoria & proy rs.movenext if not rs.eof then categoria= categoria & "," end if end if loop |
| ||||
Bueno... scope = alcance O sea, practicamente con esto le estas diciendo cual es el alcance que tendra el query, podria ser, como ya te dijeron que simplemente cada directorio es una tabla distinta, precisamente por eso se ocupa igual que un query. A lo mejor te sirve algo de esto, nunca esta de mas leer un poco ![]() ![]() http://202.102.233.250/b2000/ASP/art...r/cn990804.htm http://support.microsoft.com/default...b;en-us;825487 ![]()
__________________ "El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera." -- Ernest Hemingway |