Buscar en documentos con Microsoft Index Server

Si deseamos realizar una búsqueda de texto en documentos, .NET nos permite aprovechar la potencia del Servicio de Microsoft Index Server para búsqueda e indexación de documentos. Si además necesitamos filtrar por un tipo de documento concreto lo podemos usar en combinación con Ifilter.

Primero hemos de asegurarnos de que el Servicio de Microsoft Index Server está iniciado. De no ser así, accederemos al listado de servicios de nuestra máquina y lo pondremos en marcha. Si deseamos que permanezca más allá de una sesión, habilitaremos el inicio automático del servicio.

Microsoft .NET permite el acceso a Index Server mediante OleDb, de forma que podemos crear consultas SQL sobre los índices de los documentos que nos permitan crear datasets sobre esos resultados como cualquier otro origen de datos. En el IDE, desde el explorador de servidores se puede crear una conexión con dicho servicio.

Un ejemplo de consulta SQL sobre Index Server podría ser el siguiente:

SELECT Rank, VPath, DocTitle, Filename, Characterization, Write

FROM SCOPE()

WHERE FREETEXT(‘diseño’)

ORDER BY RANK, SIZE DESC

Rank es el campo que establece el rango de coincidencia del patrón dado por FREETEXT(). Si añadimos más palabras a esta función, la consulta nos devolverá aquellos documentos que tengan al menos una de las palabras definidas en el patrón.

Otra función de búsqueda interesante es CONTAINS

SELECT Rank, VPath, DocTitle, Filename, Characterization, Write

FROM SCOPE()

WHERE NOT CONTAINS(VPath, ‘”_vti_” OR “.config”‘)

AND CONTAINS(Contents, ‘”keyword1″ AND “keyword2″‘)

AND CONTAINS(DocTitle, ‘”keyword1″ AND “keyword2″‘)

La función SCOPE nos permite limitar nuestra consulta a uno varios directorios particulares, y definir si queremos o no que incluya subdirectorios.

Deja una respuesta