GroupDocs.Search for .NET 26.10 está ahora disponible. Esta es una versión mayor: el formato del índice ha sido rediseñado, por lo que los índices ocupan menos espacio en disco, necesitan la mitad de RAM y se abren de 2 a 4 veces más rápido. La búsqueda, eliminación, optimización y búsqueda de imágenes se aceleran varias a cientos de veces, las búsquedas ya no esperan a la indexación, y los datos del índice están protegidos con sumas de verificación y actualizaciones atómicas.

Los índices existentes creados por las versiones 22.7–26.8 se convierten al nuevo formato sin volver a indexar. La versión contiene 22 cambios: 4 nuevas características, 15 mejoras y 3 correcciones.

Aspectos destacados del rendimiento

La mayoría de las mejoras aumentan con el tamaño del índice y la cantidad de sus segmentos.

Qué Ganancia en 26.10
RAM requerida por un índice cargado 2 veces menos
Apertura de un índice De 2 a 4 veces más rápido
Tamaño del índice en disco Crece en proporción a los datos indexados; cuanto mayor es el índice, mayor es el ahorro
Búsqueda de una palabra en índices grandes Hasta 2 veces más rápido; palabras raras de 10 a 40 veces más rápido
Búsqueda difusa en índices grandes De 2.5 a 5 veces más rápido
Búsqueda con comodines en índices grandes De 2.5 a 3 veces más rápido
Búsqueda con comodines, expresiones regulares, rango numérico y búsqueda difusa por fragmentos De 7 a 150 veces más rápido
Búsqueda por rango de fechas De 2 a 27 veces más rápido
Eliminación de documentos Cientos de veces más rápido, 4 veces menos memoria, sin espacio adicional en disco
Optimización del índice 4 veces más rápido, 4 veces menos memoria
RAM máximo durante la indexación 2 veces menos
Recuperación del texto almacenado de un documento Hasta 15 veces más rápido
Datos de búsqueda de imágenes 2.9 veces menos memoria, cargado 6.6 veces más rápido, guardado 100 veces más rápido; búsqueda inversa de imágenes hasta 1.8 veces más rápido
Búsqueda mientras el índice se está modificando Ya no se bloquea
Fiabilidad del índice Sumas de verificación y cambios atómicos; las operaciones interrumpidas se completan o se revierten
Hilos de búsqueda Todos los núcleos del procesador por defecto; se pueden cambiar en cualquier momento

Novedades en esta versión

Clave Resumen Categoría
SEARCHNET-3665 Implementar la capacidad de cambiar el número de hilos de búsqueda en cualquier momento Funcionalidad
SEARCHNET-3666 Implementar una opción para reemplazar caracteres sustitutos no emparejados Funcionalidad
SEARCHNET-3667 Implementar una opción para omitir términos que consisten solo en caracteres combinados Funcionalidad
SEARCHNET-3668 Implementar la actualización de la versión del índice al nuevo formato sin volver a indexar los documentos Funcionalidad
SEARCHNET-3669 Implementar la optimización del consumo de espacio en disco de un índice Mejora
SEARCHNET-3670 Implementar la optimización del consumo de RAM de un índice cargado Mejora
SEARCHNET-3671 Implementar la optimización de la velocidad de carga del índice Mejora
SEARCHNET-3672 Implementar la optimización de la velocidad de búsqueda en índices grandes Mejora
SEARCHNET-3673 Implementar la optimización de la búsqueda difusa Mejora
SEARCHNET-3674 Implementar la optimización de la búsqueda con comodines Mejora
SEARCHNET-3675 Implementar la optimización de la eliminación y actualización de documentos Mejora
SEARCHNET-3676 Implementar la optimización de la operación de optimización del índice Mejora
SEARCHNET-3677 Permitir la búsqueda mientras el índice se está modificando Mejora
SEARCHNET-3678 Mejorar la fiabilidad del índice Mejora
SEARCHNET-3679 Implementar la optimización del uso de memoria durante la indexación Mejora
SEARCHNET-3680 Implementar la optimización de la recuperación del texto del documento Mejora
SEARCHNET-3681 Implementar la optimización de la búsqueda de imágenes Mejora
SEARCHNET-3682 Implementar el manejo de mayúsculas y minúsculas de forma idéntica en todas las plataformas Mejora
SEARCHNET-3688 Implementar la optimización de la búsqueda por fragmentos Mejora
SEARCHNET-3683 Corregir el número predeterminado de hilos de búsqueda Corrección
SEARCHNET-3684 Prevenir la indexación inconsistente después de cambiar los diccionarios de términos Corrección
SEARCHNET-3685 Prevenir la fusión de índices que procesan el texto de manera diferente Corrección

Características principales

Almacenamiento y fiabilidad del índice

  • El tamaño del índice ahora crece en proporción a los datos indexados, por lo que los índices grandes con muchos segmentos ahorran más espacio.
  • Un índice cargado necesita la mitad de RAM, y abrir un índice es de 2 a 4 veces más rápido.
  • Los datos del índice están protegidos con sumas de verificación, y todos los cambios se aplican de forma atómica. Si una operación se interrumpe por un error, una falla de energía o la terminación del proceso, el índice permanece en su estado consistente anterior.

Búsqueda

  • Solo se leen los segmentos que contienen los términos de la consulta, lo que acelera la búsqueda de palabras, difusa, con comodines y por fragmentos.
  • La búsqueda utiliza todos los núcleos del procesador por defecto, y el número de hilos se puede cambiar en cualquier momento mediante IndexSettings.SearchThreads.
  • Las búsquedas y las operaciones que modifican el índice (indexación, actualización, eliminación, fusión, optimización) ya no se bloquean entre sí. Cada búsqueda trabaja con una instantánea consistente del índice.

Indexación y mantenimiento

  • Eliminar documentos ya no reescribe el índice: los documentos se excluyen de la búsqueda inmediatamente y se eliminan físicamente durante la optimización.
  • La optimización del índice es 4 veces más rápida y usa 4 veces menos memoria; los índices muy grandes se optimizan en varios segmentos de tamaño limitado.
  • La indexación consume aproximadamente la mitad de la RAM máxima.

Procesamiento de texto

  • El manejo de mayúsculas y minúsculas se trata de forma idéntica en .NET Framework y .NET, por lo que los resultados de búsqueda no dependen de la plataforma.
  • Los caracteres sustitutos no emparejados se reemplazan con U+FFFD en lugar de eliminarse, y los términos que consisten solo en caracteres combinados ya no se indexan.

Cambios en la API pública

Se han añadido dos propiedades a la clase GroupDocs.Search.IndexSettings:

  • Boolean ReplaceUnpairedSurrogates – reemplaza los caracteres sustitutos UTF-16 no emparejados con el carácter de reemplazo Unicode (U+FFFD). Habilitado por defecto.
  • Boolean SkipBlendedOnlyTerms – excluye del índice los términos que consisten solo en caracteres combinados. Habilitado por defecto.

Ambas configuraciones se fijan cuando se crea un índice.

Ejemplo de código

El siguiente ejemplo actualiza un índice creado por una versión anterior al nuevo formato de índice sin volver a indexar los documentos.

string sourceIndexFolder = @"c:\MyOldIndex\"; // Specify path to the index of a previous version
string targetIndexFolder = @"c:\MyNewIndex\"; // Specify path to the folder for the updated index

IndexUpdater updater = new IndexUpdater(); // Creating an index updater

if (updater.CanUpdateVersion(sourceIndexFolder)) // Checking whether the index version can be updated
{
    VersionUpdateResult result = updater.UpdateVersion(sourceIndexFolder, targetIndexFolder); // Updating the index version; the source index is not changed
}

Notas de actualización

Tenga en cuenta los siguientes cambios al actualizar desde una versión anterior:

  • El formato del índice ha cambiado. Los índices de versiones anteriores deben convertirse con la clase IndexUpdater antes de poder abrirse. No se requieren los documentos de origen, el índice convertido se guarda en una carpeta diferente y el índice de origen no se modifica.
  • Los diccionarios de términos se fijan una vez que un índice contiene documentos. El alfabeto, el diccionario de tokenización, los reemplazos de caracteres, las palabras vacías y las configuraciones UseStopWords y UseCharacterReplacements deben configurarse antes de indexar el primer documento. Un cambio posterior lanza InvalidOperationException.
  • Los índices incompatibles no se fusionan. Index.Merge lanza InvalidOperationException si los índices fusionados dividen el texto en términos de manera diferente.
  • La búsqueda es multihilo por defecto. Con el valor predeterminado IndexSettings.SearchThreads, la búsqueda usa tantos hilos como núcleos de procesador haya. Para limitar el número de hilos, establezca la propiedad explícitamente.
  • Dos nuevas configuraciones de índice están habilitadas por defecto. Para mantener el comportamiento anterior, establezca ReplaceUnpairedSurrogates y SkipBlendedOnlyTerms en false antes de crear un índice.
  • Los documentos eliminados se eliminan físicamente durante la optimización. Llame a Index.Optimize para recuperar el espacio.
  • El número de fragmentos ha cambiado. La búsqueda por fragmentos ya no devuelve un fragmento por cada segmento. Itere sobre los fragmentos mientras SearchResult.NextChunkSearchToken no sea nulo en lugar de depender del número de segmentos.

Cómo obtener la actualización

NuGet

  • NuGet – Instale el paquete más reciente:
# Package Manager
NuGet\Install-Package GroupDocs.Search -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search --version 26.10.0
# Package Manager
NuGet\Install-Package GroupDocs.Search.NETFramework -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search.NETFramework --version 26.10.0

Descarga directa

Recursos