GroupDocs.Search for .NET 17.08 Release Notes

Major Features

There are 11 features and enhancements in this regular monthly release. The most notable are:

  • SEARCHNET-1146 Fix all arguments classes according to best practices
  • SEARCHNET-1091 Remove obsolete SimilarityLevel property from SearchParameters
  • SEARCHNET-474 Implement accent-insensitive indexing
  • SEARCHNET-576 Add FileIndexing event for selecting custom indexing strategy for separate document
  • SEARCHNET-1092 Implement option for the spelling corrector ‘Only best results’
  • SEARCHNET-1096 Implement option for the fuzzy search ‘Only best results’
  • SEARCHNET-1098 Implement Limit for Searching Report
  • SEARCHNET-1099 Implement Limit for Indexing Report
  • SEARCHNET-1129 Implement method that generates text with highlighted search results
  • SEARCHNET-1135 Implement indexing ZIP archives
  • SEARCHNET-1148 Add StatusChanged event to Index class

All Changes

KeySummaryCategory
SEARCHNET-1146Fix all arguments classes according to best practicesBreaking Change
SEARCHNET-1091Remove obsolete SimilarityLevel property from SearchParametersEnhancement
SEARCHNET-474Implement accent-insensitive indexingNew Feature
SEARCHNET-576Add FileIndexing event for selecting custom indexing strategy for separate documentNew Feature
SEARCHNET-1092Implement option for the spelling corrector ‘Only best results’New Feature
SEARCHNET-1096Implement option for the fuzzy search ‘Only best results’New Feature
SEARCHNET-1098Implement Limit for Searching ReportNew Feature
SEARCHNET-1099Implement Limit for Indexing ReportNew Feature
SEARCHNET-1129Implement method that generates text with highlighted search resultsNew Feature
SEARCHNET-1135Implement indexing ZIP archivesNew Feature
SEARCHNET-1148Add StatusChanged event to Index classNew Feature

Public API and Backward Incompatible Changes

Fix all arguments classes according to best practices

In this enhancement all argument classes have been renamed according to best practices.

Public API Changes
Class GroupDocs.Search.Events.BaseIndexArg renamed to GroupDocs.Search.Events.BaseIndexEventArgs.
Class GroupDocs.Search.Events.PasswordRequiredArg renamed to GroupDocs.Search.Events.PasswordRequiredEventArgs.
Class GroupDocs.Search.Events.OperationFinishedArg renamed to GroupDocs.Search.Events.OperationFinishedEventArgs.
Class GroupDocs.Search.Events.OperationProgressArg renamed to GroupDocs.Search.Events.OperationProgressEventArgs.

Remove obsolete SimilarityLevel property from SearchParameters

In this enhancement obsolete SimilarityLevel property has been removed from Public API.

**Public API Changes
**Property SimilarityLevel has been removed from GroupDocs.Search.FuzzySearchParameters class.

Use this code to set similarity level for fuzzy search:

C#

SearchParameters searchParameters = new SearchParameters();
searchParameters.FuzzySearch.Enabled = true;

// Removed obsolete property
// searchParameters.FuzzySearch.SimilarityLevel = 0.5;

// Current way to set similarity level
searchParameters.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.5);

Implement accent-insensitive indexing

This feature allows to perform replacements of characters during indexing.

Users can manage list of characters for replacements. It makes sense to do this only before indexing.

Public API Changes
Class CharacterReplacementDictionary has been added to GroupDocs.Search namespace.
Property **GroupDocs.Search.**CharacterReplacementDictionary CharacterReplacements has been added to GroupDocs.Search.DictionaryCollection class.
Property bool UseCharacterReplacements has been added to GroupDocs.Search.IndexingSettings class.

This example shows how to use and manage character replacement dictionary:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";
string replacementsFileName = @"c:\MyReplacements.txt";

// Enabling replacements during indexing
var settings = new IndexingSettings();
settings.UseCharacterReplacements = true;

// Creating index
Index index = new Index(indexFolder, settings);

// Clearing dictionary of replacements
index.Dictionaries.CharacterReplacements.Clear();

// Adding replacements
KeyValuePair<char, char>[] replacements = new KeyValuePair<char, char>[]
{
    new KeyValuePair<char, char>('Ṝ', 'R'),
    new KeyValuePair<char, char>('ṝ', 'r'),
};
index.Dictionaries.CharacterReplacements.AddRange(replacements);

// Import replacements from file. Existing replacements are staying.
index.Dictionaries.CharacterReplacements.Import(replacementsFileName);
// Export replacements to file
index.Dictionaries.CharacterReplacements.Export(@"c:\MyExportedReplacements.txt");

// Indexing
index.AddToIndex(documentsFolder);

Add FileIndexing event for selecting custom indexing strategy for separate document

Feature allows to set custom strategy for each document.

User can select skipping indexing, change text extractor, change encoding for text files or do something else before indexing.

Public API Changes
Class Encodings has been added to GroupDocs.Search namespace.
Class FileIndexingEventArgs has been added to GroupDocs.Search.Events namespace.
Event FileIndexing has been added to GroupDocs.Search.Index class.
Event FileIndexing has been added to GroupDocs.Search.IndexRepository class.
Fields of Encodings class are listed below.

Click here to view the list of fields added to Encodings class

Property string IBM037 has been added to GroupDocs.Search.Encodings class.
Property string IBM437 has been added to GroupDocs.Search.Encodings class.
Property string IBM500 has been added to GroupDocs.Search.Encodings class.
Property string ASMO_708 has been added to GroupDocs.Search.Encodings class.
Property string DOS_720 has been added to GroupDocs.Search.Encodings class.
Property string ibm737 has been added to GroupDocs.Search.Encodings class.
Property string ibm775 has been added to GroupDocs.Search.Encodings class.
Property string ibm850 has been added to GroupDocs.Search.Encodings class.
Property string ibm852 has been added to GroupDocs.Search.Encodings class.
Property string IBM855 has been added to GroupDocs.Search.Encodings class.
Property string ibm857 has been added to GroupDocs.Search.Encodings class.
Property string IBM00858 has been added to GroupDocs.Search.Encodings class.
Property string IBM860 has been added to GroupDocs.Search.Encodings class.
Property string ibm861 has been added to GroupDocs.Search.Encodings class.
Property string DOS_862 has been added to GroupDocs.Search.Encodings class.
Property string IBM863 has been added to GroupDocs.Search.Encodings class.
Property string IBM864 has been added to GroupDocs.Search.Encodings class.
Property string IBM865 has been added to GroupDocs.Search.Encodings class.
Property string cp866 has been added to GroupDocs.Search.Encodings class.
Property string ibm869 has been added to GroupDocs.Search.Encodings class.
Property string IBM870 has been added to GroupDocs.Search.Encodings class.
Property string windows_874 has been added to GroupDocs.Search.Encodings class.
Property string cp875 has been added to GroupDocs.Search.Encodings class.
Property string shift_jis has been added to GroupDocs.Search.Encodings class.
Property string gb2312 has been added to GroupDocs.Search.Encodings class.
Property string ks_c_5601_1987 has been added to GroupDocs.Search.Encodings class.
Property string big5 has been added to GroupDocs.Search.Encodings class.
Property string IBM1026 has been added to GroupDocs.Search.Encodings class.
Property string IBM01047 has been added to GroupDocs.Search.Encodings class.
Property string IBM01140 has been added to GroupDocs.Search.Encodings class.
Property string IBM01141 has been added to GroupDocs.Search.Encodings class.
Property string IBM01142 has been added to GroupDocs.Search.Encodings class.
Property string IBM01143 has been added to GroupDocs.Search.Encodings class.
Property string IBM01144 has been added to GroupDocs.Search.Encodings class.
Property string IBM01145 has been added to GroupDocs.Search.Encodings class.
Property string IBM01146 has been added to GroupDocs.Search.Encodings class.
Property string IBM01147 has been added to GroupDocs.Search.Encodings class.
Property string IBM01148 has been added to GroupDocs.Search.Encodings class.
Property string IBM01149 has been added to GroupDocs.Search.Encodings class.
Property string utf_16 has been added to GroupDocs.Search.Encodings class.
Property string utf_16BE has been added to GroupDocs.Search.Encodings class.
Property string windows_1250 has been added to GroupDocs.Search.Encodings class.
Property string windows_1251 has been added to GroupDocs.Search.Encodings class.
Property string Windows_1252 has been added to GroupDocs.Search.Encodings class.
Property string windows_1253 has been added to GroupDocs.Search.Encodings class.
Property string windows_1254 has been added to GroupDocs.Search.Encodings class.
Property string windows_1255 has been added to GroupDocs.Search.Encodings class.
Property string windows_1256 has been added to GroupDocs.Search.Encodings class.
Property string windows_1257 has been added to GroupDocs.Search.Encodings class.
Property string windows_1258 has been added to GroupDocs.Search.Encodings class.
Property string Johab has been added to GroupDocs.Search.Encodings class.
Property string macintosh has been added to GroupDocs.Search.Encodings class.
Property string x_mac_japanese has been added to GroupDocs.Search.Encodings class.
Property string x_mac_chinesetrad has been added to GroupDocs.Search.Encodings class.
Property string x_mac_korean has been added to GroupDocs.Search.Encodings class.
Property string x_mac_arabic has been added to GroupDocs.Search.Encodings class.
Property string x_mac_hebrew has been added to GroupDocs.Search.Encodings class.
Property string x_mac_greek has been added to GroupDocs.Search.Encodings class.
Property string x_mac_cyrillic has been added to GroupDocs.Search.Encodings class.
Property string x_mac_chinesesimp has been added to GroupDocs.Search.Encodings class.
Property string x_mac_romanian has been added to GroupDocs.Search.Encodings class.
Property string x_mac_ukrainian has been added to GroupDocs.Search.Encodings class.
Property string x_mac_thai has been added to GroupDocs.Search.Encodings class.
Property string x_mac_ce has been added to GroupDocs.Search.Encodings class.
Property string x_mac_icelandic has been added to GroupDocs.Search.Encodings class.
Property string x_mac_turkish has been added to GroupDocs.Search.Encodings class.
Property string x_mac_croatian has been added to GroupDocs.Search.Encodings class.
Property string utf_32 has been added to GroupDocs.Search.Encodings class.
Property string utf_32BE has been added to GroupDocs.Search.Encodings class.
Property string x_Chinese_CNS has been added to GroupDocs.Search.Encodings class.
Property string x_cp20001 has been added to GroupDocs.Search.Encodings class.
Property string x_Chinese_Eten has been added to GroupDocs.Search.Encodings class.
Property string x_cp20003 has been added to GroupDocs.Search.Encodings class.
Property string x_cp20004 has been added to GroupDocs.Search.Encodings class.
Property string x_cp20005 has been added to GroupDocs.Search.Encodings class.
Property string x_IA5 has been added to GroupDocs.Search.Encodings class.
Property string x_IA5_German has been added to GroupDocs.Search.Encodings class.
Property string x_IA5_Swedish has been added to GroupDocs.Search.Encodings class.
Property string x_IA5_Norwegian has been added to GroupDocs.Search.Encodings class.
Property string us_ascii has been added to GroupDocs.Search.Encodings class.
Property string x_cp20261 has been added to GroupDocs.Search.Encodings class.
Property string x_cp20269 has been added to GroupDocs.Search.Encodings class.
Property string IBM273 has been added to GroupDocs.Search.Encodings class.
Property string IBM277 has been added to GroupDocs.Search.Encodings class.
Property string IBM278 has been added to GroupDocs.Search.Encodings class.
Property string IBM280 has been added to GroupDocs.Search.Encodings class.
Property string IBM284 has been added to GroupDocs.Search.Encodings class.
Property string IBM285 has been added to GroupDocs.Search.Encodings class.
Property string IBM290 has been added to GroupDocs.Search.Encodings class.
Property string IBM297 has been added to GroupDocs.Search.Encodings class.
Property string IBM420 has been added to GroupDocs.Search.Encodings class.
Property string IBM423 has been added to GroupDocs.Search.Encodings class.
Property string IBM424 has been added to GroupDocs.Search.Encodings class.
Property string x_EBCDIC_KoreanExtended has been added to GroupDocs.Search.Encodings class.
Property string IBM_Thai has been added to GroupDocs.Search.Encodings class.
Property string koi8_r has been added to GroupDocs.Search.Encodings class.
Property string IBM871 has been added to GroupDocs.Search.Encodings class.
Property string IBM880 has been added to GroupDocs.Search.Encodings class.
Property string IBM905 has been added to GroupDocs.Search.Encodings class.
Property string IBM00924 has been added to GroupDocs.Search.Encodings class.
Property string EUC_JP has been added to GroupDocs.Search.Encodings class.
Property string x_cp20936 has been added to GroupDocs.Search.Encodings class.
Property string x_cp20949 has been added to GroupDocs.Search.Encodings class.
Property string cp1025 has been added to GroupDocs.Search.Encodings class.
Property string koi8_u has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_1 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_2 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_3 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_4 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_5 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_6 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_7 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_8 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_9 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_13 has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_15 has been added to GroupDocs.Search.Encodings class.
Property string x_Europa has been added to GroupDocs.Search.Encodings class.
Property string iso_8859_8_i has been added to GroupDocs.Search.Encodings class.
Property string iso_2022_jp has been added to GroupDocs.Search.Encodings class.
Property string csISO2022JP has been added to GroupDocs.Search.Encodings class.
Property string iso_2022_kr has been added to GroupDocs.Search.Encodings class.
Property string x_cp50227 has been added to GroupDocs.Search.Encodings class.
Property string euc_jp has been added to GroupDocs.Search.Encodings class.
Property string EUC_CN has been added to GroupDocs.Search.Encodings class.
Property string euc_kr has been added to GroupDocs.Search.Encodings class.
Property string hz_gb_2312 has been added to GroupDocs.Search.Encodings class.
Property string GB18030 has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_de has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_be has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_ta has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_te has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_as has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_or has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_ka has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_ma has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_gu has been added to GroupDocs.Search.Encodings class.
Property string x_iscii_pa has been added to GroupDocs.Search.Encodings class.
Property string utf_7 has been added to GroupDocs.Search.Encodings class.
Property string utf_8 has been added to GroupDocs.Search.Encodings class.

This example shows how to skip indexing by file name:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

Index index = new Index(indexFolder);

// Subscrubing to event FileIndexing where we skip all files which contain 'secret' in file name
index.FileIndexing += (sender, arg) =>
{
    if (arg.DocumentFullName.Contains("secret"))
    {
        arg.SkipIndexing = true;
    }
};

index.AddToIndex(documentsFolder);

This example shows how set encoding for some files:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

Index index = new Index(indexFolder);

// Subscrubing to event FileIndexing where we set encoding for some files
index.FileIndexing += (sender, arg) =>
{
    if (arg.DocumentFullName.Contains("not_english"))
    {
        // Use GroupDocs.Search.Encodings constants to select encoding
        arg.Encoding = GroupDocs.Search.Encodings.windows_1251;
    }
};

index.AddToIndex(documentsFolder);

This example shows how set custom text extractor for some files:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

Index index = new Index(indexFolder);

// Subscrubing to event FileIndexing where we set custom text extractor for some files
index.FileIndexing += (sender, arg) =>
{
    if (arg.DocumentFullName.Contains(".txt"))
    {
        arg.CustomExtractor = new CustomExtractor();
    }
};

index.AddToIndex(documentsFolder);

...

class CustomExtractor : IFieldExtractor
{
    public string[] Extensions { get { return new[] { ".txt" }; } }

    public GroupDocs.Search.FieldInfo[] GetFields(string fileName)
    {
        System.Collections.Generic.List<GroupDocs.Search.FieldInfo> fields =
            new System.Collections.Generic.List<GroupDocs.Search.FieldInfo>();
        fields.Add(new Search.FieldInfo("content", "extracted text"));
        return fields.ToArray();
    }
}

Implement accent-insensitive indexing

This feature allows to perform replacements of characters during indexing.

Users can manage list of characters for replacements. It makes sense to do this only before indexing.

Public API Changes
Class CharacterReplacementDictionary has been added to GroupDocs.Search namespace.
Property **GroupDocs.Search.**CharacterReplacementDictionary CharacterReplacements has been added to GroupDocs.Search.DictionaryCollection class.
Property bool UseCharacterReplacements has been added to GroupDocs.Search.IndexingSettings class.

This example shows how to use and manage character replacement dictionary:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";
string replacementsFileName = @"c:\MyReplacements.txt";

// Enabling replacements during indexing
var settings = new IndexingSettings();
settings.UseCharacterReplacements = true;

// Creating index
Index index = new Index(indexFolder, settings);

// Clearing dictionary of replacements
index.Dictionaries.CharacterReplacements.Clear();

// Adding replacements
KeyValuePair<char, char>[] replacements = new KeyValuePair<char, char>[]
{
    new KeyValuePair<char, char>('Ṝ', 'R'),
    new KeyValuePair<char, char>('ṝ', 'r'),
};
index.Dictionaries.CharacterReplacements.AddRange(replacements);

// Import replacements from file. Existing replacements are staying.
index.Dictionaries.CharacterReplacements.Import(replacementsFileName);
// Export replacements to file
index.Dictionaries.CharacterReplacements.Export(@"c:\MyExportedReplacements.txt");

// Indexing
index.AddToIndex(documentsFolder);

Implement option for the spelling corrector ‘Only best results’

This feature allows to perform spelling correction by collecting suggestions with only minimum mistake count and discarding worse suggestions.

Enabling this option can greatly improve the performance of spelling corrector.

Public API Changes
Property **bool **OnlyBestResults has been added to **GroupDocs.Search.**SpellingCorrectorParameters class.

This example shows how to use OnlyBestResults option:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

// Creating index
Index index = new Index(indexFolder);

// Indexing
index.AddToIndex(documentsFolder);

SearchParameters searchParameters = new SearchParameters();
// Enabling spelling correction
searchParameters.SpellingCorrector.Enabled = true;
// Setting maximum mistake count to 5
searchParameters.SpellingCorrector.MaxMistakeCount = 5;
// Enabling OnlyBestResults option
searchParameters.SpellingCorrector.OnlyBestResults = true;

// Searching
SearchResults searchResults = index.Search("some", searchParameters);

Implement option for the fuzzy search ‘Only best results’

This feature allows to perform fuzzy search by collecting results with only minimum mistake count and discarding worse results.

Enabling this option can greatly improve the performance of fuzzy search.

Public API Changes
Property **bool **OnlyBestResults has been added to GroupDocs.Search.FuzzySearchParameters class.

This example shows how to use OnlyBestResults option:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

// Creating index
Index index = new Index(indexFolder);

// Indexing
index.AddToIndex(documentsFolder);

SearchParameters searchParameters = new SearchParameters();
// Enabling fuzzy search
searchParameters.FuzzySearch.Enabled = true;
// Setting maximum mistake count to 5
searchParameters.FuzzySearch.FuzzyAlgorithm = new TableDiscreteFunction(5);
// Enabling OnlyBestResults option
searchParameters.FuzzySearch.OnlyBestResults = true;

// Searching
SearchResults searchResults = index.Search("some", searchParameters);

Implement Limit for Searching Report

Feature allows to set the maximum count of search reports.

This value means how many last reports are stored.

Default value of the maximum search report count is 10.

Public API Changes
Property int MaxSearchingReportCount has been added to GroupDocs.Search.IndexingSettings class.

This example shows how to limit the search report:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

Index index = new Index(indexFolder);

// Setting the maximum count of search reports
index.IndexingSettings.MaxSearchingReportCount = 3;

// Indexing
index.AddToIndex(documentsFolder);

// Running 100 of searches
for (int i = 0; i < 100; i++)
{
    index.Search("Query");
}

// Getting search report. Array contains only 3 last records.
SearchingReport[] report = index.GetSearchingReport();

// This code writes to console information about 3 last searches only
foreach (SearchingReport record in report)
{
    Console.WriteLine("Searching takes {0}, {1} results was found.", record.SearchingTime, record.ResultCount);
}

Implement Limit for Indexing Report

Feature allows to set the maximum count of indexing report.

This value means how many last reports are stored.

Default value of the maximum indexing report count is 5.

Public API Changes
Property int MaxIndexingReportCount has been added to GroupDocs.Search.IndexingSettings class.

This example shows how to limit the index report:

C#

string indexFolder = @"c:\MyIndex";

Index index = new Index(indexFolder);

// Setting the maximum count of indexing reports
index.IndexingSettings.MaxIndexingReportCount = 3;

index.AddToIndex(@"c:\MyDocuments\folder1\");
index.AddToIndex(@"c:\MyDocuments\folder2\");
index.AddToIndex(@"c:\MyDocuments\folder3\");
index.AddToIndex(@"c:\MyDocuments\folder4\");
index.AddToIndex(@"c:\MyDocuments\folder5\");

// Getting indexing report. Array contains only 3 last records about indexing.
IndexingReport[] report = index.GetIndexingReport();

// Five indexing operations were performed, but only 3 last operations will be printed on the console in this example
foreach (IndexingReport record in report)
{
    Console.WriteLine("Indexing takes {0}, index size: {1}.", record.IndexingTime, record.TotalIndexSize);
}

Implement method that generates text with highlighted search results

This feature allows to generate text formatted with minimum number of HTML tags.

HTML tags are used to insert line breaks, highlight found terms in text, and navigate on found terms in web browser.

Public API Changes
Method string HighlightInText(DocumentResultInfo info, IFieldExtractor customExtractor, string encoding) has been added to GroupDocs.Search.Index class.
Method void HighlightInText(string fileName, DocumentResultInfo info
, IFieldExtractor
customExtractor**, string** encoding**)** has been added to GroupDocs.Search.Index class.

This example shows how to generate text with highlighted search results:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

// Creating index
Index index = new Index(indexFolder);

// Indexing
index.AddToIndex(documentsFolder);

// Searching
SearchResults results = index.Search("some");

// Generating HTML-formatted text for the first document in search results
string text = index.HighlightInText(results[0]);

This example shows how to generate text with highlighted results directly to file:

C#

string indexFolder = @"c:\MyIndex";
string documentsFolder = @"c:\MyDocuments";

// Creating index
Index index = new Index(indexFolder);

// Indexing
index.AddToIndex(documentsFolder);

// Searching
SearchResults results = index.Search("some");

// Generating HTML-formatted text for the first document directly to the file 'HighlightedResults.html'
index.HighlightInText("HighlightedResults.html", results[0]);

This example shows how to create URL string for generated HTML file to navigate on search results in web browser:

C#

file:///C:/HighlightedResults.html#hit0

Implement indexing ZIP archives

Implemented indexing of zip-archives with all supported documents.

Public API Changes
Enum value ZipArchive has been added to GroupDocs.Search.DocumentType enum.
Class ZipArchiveResultInfo has been added to GroupDocs.Search namespace.
Property string InnerPath has been added to GroupDocs.Search.OutlookEmailMessageResultInfo class.

Add StatusChanged event to Index class

This feature allows to track index status in a simple way.

Public API Changes
Event EventHandler<GroupDocs.Search.Events.BaseIndexEventArgs> StatusChanged added to GroupDocs.Search.Index class.

This example shows how to use StatusChanged event:

C#

string indexFolder = @"c:\MyIndex";

// Creating index
Index index = new Index(indexFolder);

IndexStatus status;
// Subscribing to StatusChanged event
index.StatusChanged += (sender, args) =>
{
    status = args.Status;
};