GroupDocs.Search for .NET 26.10 está agora disponível. Esta é uma versão principal: o formato do índice foi redesenhado, de modo que os índices ocupam menos espaço em disco, precisam metade da RAM e são abertos de 2 a 4 vezes mais rápido. Busca, exclusão, otimização e busca de imagens são aceleradas de várias a centenas de vezes, as buscas não esperam mais pela indexação e os dados do índice são protegidos com somas de verificação e atualizações atômicas.
Os índices existentes criados pelas versões 22.7–26.8 são convertidos para o novo formato sem reindexação. A versão contém 22 alterações: 4 novos recursos, 15 melhorias e 3 correções.
Destaques de desempenho
A maioria dos ganhos aumenta com o tamanho do índice e o número de seus segmentos.
| O que | Ganho em 26.10 |
|---|---|
| RAM necessária por um índice carregado | 2 vezes menos |
| Abertura de um índice | De 2 a 4 vezes mais rápido |
| Tamanho do índice em disco | Cresce proporcionalmente aos dados indexados; quanto maior o índice, maior a economia |
| Busca por uma palavra em índices grandes | Até 2 vezes mais rápido; palavras raras de 10 a 40 vezes mais rápido |
| Busca difusa em índices grandes | De 2,5 a 5 vezes mais rápido |
| Busca por curinga em índices grandes | De 2,5 a 3 vezes mais rápido |
| Busca por curinga, expressão regular, intervalo numérico e difusa por blocos | De 7 a 150 vezes mais rápido |
| Busca por intervalo de datas | De 2 a 27 vezes mais rápido |
| Exclusão de documentos | Centenas de vezes mais rápido, 4 vezes menos memória, sem espaço adicional em disco |
| Otimização do índice | 4 vezes mais rápido, 4 vezes menos memória |
| Pico de RAM durante a indexação | 2 vezes menos |
| Recuperação do texto armazenado de um documento | Até 15 vezes mais rápido |
| Dados de busca de imagem | 2,9 vezes menos memória, carregados 6,6 vezes mais rápido, salvos 100 vezes mais rápido; busca reversa de imagem até 1,8 vezes mais rápido |
| Busca enquanto o índice está sendo modificado | Não bloqueia mais |
| Confiabilidade do índice | Somas de verificação e alterações atômicas; operações interrompidas são concluídas ou revertidas |
| Threads de busca | Todos os núcleos do processador por padrão; podem ser alterados a qualquer momento |
O que há de novo nesta versão
| Chave | Resumo | Categoria |
|---|---|---|
| SEARCHNET-3665 | Implementar a capacidade de alterar o número de threads de busca a qualquer momento | Feature |
| SEARCHNET-3666 | Implementar uma opção para substituir caracteres substitutos não pareados | Feature |
| SEARCHNET-3667 | Implementar uma opção para ignorar termos compostos apenas por caracteres mesclados | Feature |
| SEARCHNET-3668 | Implementar atualização da versão do índice para o novo formato sem reindexar os documentos | Feature |
| SEARCHNET-3669 | Implementar otimização do consumo de espaço em disco de um índice | Improvement |
| SEARCHNET-3670 | Implementar otimização do consumo de RAM de um índice carregado | Improvement |
| SEARCHNET-3671 | Implementar otimização da velocidade de carregamento do índice | Improvement |
| SEARCHNET-3672 | Implementar otimização da velocidade de busca em índices grandes | Improvement |
| SEARCHNET-3673 | Implementar otimização da busca difusa | Improvement |
| SEARCHNET-3674 | Implementar otimização da busca por curinga | Improvement |
| SEARCHNET-3675 | Implementar otimização da exclusão e atualização de documentos | Improvement |
| SEARCHNET-3676 | Implementar otimização da operação de otimização do índice | Improvement |
| SEARCHNET-3677 | Permitir busca enquanto o índice está sendo modificado | Improvement |
| SEARCHNET-3678 | Melhorar a confiabilidade do índice | Improvement |
| SEARCHNET-3679 | Implementar otimização do uso de memória durante a indexação | Improvement |
| SEARCHNET-3680 | Implementar otimização da recuperação de texto de documentos | Improvement |
| SEARCHNET-3681 | Implementar otimização da busca de imagem | Improvement |
| SEARCHNET-3682 | Implementar tratamento de caixa de letras de forma idêntica em todas as plataformas | Improvement |
| SEARCHNET-3688 | Implementar otimização da busca por blocos | Improvement |
| SEARCHNET-3683 | Corrigir o número padrão de threads de busca | Fix |
| SEARCHNET-3684 | Impedir indexação inconsistente após alteração de dicionários de termos | Fix |
| SEARCHNET-3685 | Impedir mesclagem de índices que processam texto de forma diferente | Fix |
Principais recursos
Armazenamento e confiabilidade do índice
- O tamanho do índice agora cresce proporcionalmente aos dados indexados, de modo que índices grandes com muitos segmentos economizam mais espaço.
- Um índice carregado precisa de metade da RAM, e abrir um índice é de 2 a 4 vezes mais rápido.
- Os dados do índice são protegidos com somas de verificação, e todas as alterações são aplicadas de forma atômica. Se uma operação for interrompida por erro, falha de energia ou término do processo, o índice permanece no seu estado consistente anterior.
Busca
- Apenas os segmentos que contêm os termos da consulta são lidos, o que acelera a busca por palavra, difusa, por curinga e por blocos.
- A busca usa todos os núcleos do processador por padrão, e o número de threads pode ser alterado a qualquer momento via
IndexSettings.SearchThreads. - Buscas e operações que modificam o índice (indexação, atualização, exclusão, mesclagem, otimização) não bloqueiam mais umas às outras. Cada busca trabalha com um instantâneo consistente do índice.
Indexação e manutenção
- A exclusão de documentos não reescreve mais o índice: os documentos são excluídos da busca imediatamente e removidos fisicamente durante a otimização.
- A otimização do índice é 4 vezes mais rápida e usa 4 vezes menos memória; índices muito grandes são otimizados em vários segmentos de tamanho limitado.
- A indexação consome cerca de metade da RAM de pico.
Processamento de texto
- A caixa de letras é tratada de forma idêntica no .NET Framework e no .NET, de modo que os resultados da busca não dependem da plataforma.
- Caracteres substitutos não pareados são substituídos por U+FFFD em vez de serem removidos, e termos que consistem apenas de caracteres mesclados não são mais indexados.
Alterações na API pública
Duas propriedades foram adicionadas à classe GroupDocs.Search.IndexSettings:
Boolean ReplaceUnpairedSurrogates– substitui caracteres substitutos UTF-16 não pareados pelo caractere de substituição Unicode (U+FFFD). Habilitado por padrão.Boolean SkipBlendedOnlyTerms– exclui da indexação os termos que consistem apenas de caracteres mesclados. Habilitado por padrão.
Ambas as configurações são fixas quando um índice é criado.
Exemplo de código
O exemplo a seguir atualiza um índice criado por uma versão anterior para o novo formato de índice sem reindexar os 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 atualização
Considere as seguintes mudanças ao atualizar de uma versão anterior:
- O formato do índice mudou. Índices de versões anteriores devem ser convertidos com a classe
IndexUpdaterantes de serem abertos. Documentos de origem não são necessários, o índice convertido é salvo em uma pasta diferente, e o índice de origem não é modificado. - Dicionários de termos são fixos assim que um índice contém documentos. O alfabeto, dicionário de tokenização, substituições de caracteres, palavras de parada e as configurações
UseStopWordseUseCharacterReplacementsdevem ser configurados antes que o primeiro documento seja indexado. Uma alteração posterior lançaInvalidOperationException. - Índices incompatíveis não são mesclados.
Index.MergelançaInvalidOperationExceptionse os índices mesclados dividirem o texto em termos de forma diferente. - A busca é multithread por padrão. Com o
IndexSettings.SearchThreadspadrão, a busca usa tantas threads quantos forem os núcleos do processador. Para limitar o número de threads, defina a propriedade explicitamente. - Duas novas configurações de índice estão habilitadas por padrão. Para manter o comportamento anterior, defina
ReplaceUnpairedSurrogateseSkipBlendedOnlyTermscomofalseantes de criar um índice. - Documentos excluídos são removidos fisicamente durante a otimização. Chame
Index.Optimizepara recuperar o espaço. - O número de blocos mudou. A busca por blocos não retorna mais um bloco para cada segmento. Itere sobre os blocos enquanto
SearchResult.NextChunkSearchTokennão for nulo em vez de confiar no número de segmentos.
Como obter a atualização
NuGet
- NuGet – Instale o pacote mais recente:
# 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
Download direto
- Download Direto – Baixe os assemblies compilados para .NET a partir da página oficial de lançamentos:
https://releases.groupdocs.com/search/net/new-releases/groupdocs.search-for-.net-26.10-dlls-only/
https://releases.groupdocs.com/search/net/new-releases/groupdocs.search-for-.net-26.10/
Recursos
- Notas completas de lançamento – https://releases.groupdocs.com/search/net/release-notes/2026/groupdocs-search-for-net-26-10-release-notes/
- Documentação – https://docs.groupdocs.com/search/net/
- Exemplos de código – https://github.com/groupdocs-search/GroupDocs.Search-for-.NET/
- Fórum de Suporte Gratuito – https://forum.groupdocs.com/c/search/
- Use-o a partir de agentes de IA – o servidor GroupDocs.Search MCP executa este motor localmente para Claude, Cursor e Copilot: https://docs.groupdocs.com/search/mcp/ · Você precisa de um banco de dados vetorial para fazer perguntas sobre uma pasta de documentos?