Antes de pasar a los detalles, veamos una descripción general de la técnica de búsqueda de texto completo. La búsqueda de texto completo es básicamente una forma más avanzada de buscar un texto/consulta en una colección de documentos. Este enfoque encuentra rápidamente todas las instancias de un término y funciona mediante el uso de índices de texto. En este artículo, aprenderemos cómo buscar mediante programación el texto completo en documentos usando C#.

Después de esto, puede implementar varias técnicas de búsqueda para buscar texto en documentos de procesamiento de texto, hojas de cálculo, presentaciones, archivos HTML, libros electrónicos en PDF, mensajes de correo electrónico, archivos ZIP y muchos otros archivos.

Uno de los ejemplos de implementación de búsqueda de texto completo es en procesadores de texto y editores de texto. Le ayuda a encontrar una frase o palabra en cualquier parte del documento.

Búsqueda de texto completo

Los siguientes temas se tratan a continuación:

API .NET para búsqueda de texto

GroupDocs.Search for .NET es una API de búsqueda de back-end que permite la búsqueda de texto completo y se puede integrar en cualquier aplicación .NET sin ninguna herramienta de terceros o dependencia de software. Le permite buscar en una multitud de formatos de documentos en sus aplicaciones.

Puede descargar el instalador DLL o MSI desde la sección de descargas o instalar la API en su aplicación .NET a través de NuGet.

PM> Install-Package GroupDocs.Search

Búsqueda de texto completo usando C#

Hay dos pasos principales para realizar o implementar una búsqueda de texto completo.

  • Indexación
  • Realizar búsqueda

Indexación

Para que sea posible buscar instantáneamente en miles de documentos con el mismo o diferentes formatos de archivo, debe crear un índice y agregarle estos documentos.

¿Qué es un índice?

Un índice posee el texto escaneado de todos los documentos. Por lo tanto, cuando se va a realizar una operación de búsqueda (buscar una consulta específica), solo se referencia el índice, en lugar del texto de los documentos originales.

Creación de índice

Se puede crear un índice en la memoria o en un disco. El índice creado en la memoria no se puede guardar después de salir de su programa. En cambio, un índice creado en el disco puede cargarse en el futuro para seguir funcionando. El siguiente ejemplo muestra cómo crear un índice en un disco.

Index index = new Index("indexPath/FolderName/");

Cuando se indexan los documentos, el índice está listo para manejar las consultas de búsqueda. Las siguientes son algunas de las técnicas de búsqueda que se pueden realizar con GroupDocs.Search para .NET:

  • Búsqueda sensible a mayúsculas y minúsculas
  • Búsqueda de expresiones regulares
  • Búsqueda de frases
  • Facetas de búsqueda
  • Búsqueda de sinónimos
  • Búsqueda con comodines

Realizar búsqueda en C#

Comenzando con un caso de uso. Si tenemos varios documentos (Word, PDF, Excel y HTML) y queremos realizar una consulta de búsqueda específica (término de búsqueda “video”) sobre ellos.

Los siguientes son los pasos para realizar una búsqueda de texto en varios documentos dentro de una carpeta:

  • Decidir la carpeta de documentos de origen y la carpeta de índice.
  • Preparar la cadena de consulta.
  • Cree Índice utilizando la carpeta de índice.
  • Agregue la carpeta de documentos de origen al índice.
  • Realizar una búsqueda usando el método Buscar clase Índice.
  • Recorrer y buscar resultados por las propiedades de cada documento.

El siguiente código fuente realiza una búsqueda de texto usando C# en todos los documentos de la carpeta proporcionada.

// Buscar texto de consulta en todos los documentos de la carpeta proporcionada en C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Crear un índice en la carpeta especificada y agregar una carpeta de documentos al índice
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Buscando en el índice
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Recorrer cada documento del Resultado de la Búsqueda
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Obtendremos la ruta del documento y el número de ocurrencias del término de búsqueda en todos los documentos disponibles en la carpeta de documentos. Aquí está la captura de pantalla para visualizar.

Salida de texto de búsqueda completa

Resaltar resultados de búsqueda de texto en C#

Realicemos ahora la misma búsqueda de texto, pero esta vez resaltaremos todas las ocurrencias que coincidan con la consulta.

Los siguientes pasos muestran cómo resaltar los resultados de la búsqueda de texto:

  • Preparar la cadena de consulta.
  • Crear Índice usando la ruta de la carpeta de índice.
  • Agregue la carpeta de documentos de origen al índice.
  • Busque en la carpeta del documento utilizando el método Buscar.
  • Mientras recorre los resultados de la búsqueda, cree el Resaltador.
  • Utilice el método Resaltar de la clase Índice para resaltar los resultados de la búsqueda.

El siguiente código genera la salida HTML con resultados de búsqueda resaltados usando C#.

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Cree un índice en la carpeta especificada y agregue la carpeta de documentos al Índice
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Buscar la palabra de consulta
SearchResult result = index.Search(query);

// Resaltar todas las ocurrencias en el texto
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

Como salida, obtendremos varios archivos HTML. Cada archivo mostrará el contenido de un documento diferente (por ejemplo, excel.xlsx, source.docx, target.docx) con el término/palabra de búsqueda resaltado. A continuación se muestra la salida HTML resaltada de un archivo DOCX.

Resalte los resultados de búsqueda de texto completo en el contenido

Obtenga una licencia de API gratuita

Puede obtener una licencia temporal gratuita para utilizar la API sin las limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a buscar texto en varios documentos de una carpeta usando C#. Además, discutimos cómo resaltar mediante programación el texto de los resultados de búsqueda en formato HTML.

Puede obtener más información sobre la API utilizando documentación. Muchos más ejemplos están disponibles en GitHub. Para consultas, contáctenos a través del foro.

Ver también