Document attributes is a special feature designed for marking indexed documents with text labels without the need for re-indexing. Added attributes can be further used to filter documents during the search.
To add and delete attributes of indexed documents, use the ChangeAttributes method of the Index class. This method accepts an AttributeChangeBatch object containing the required attribute changes as a parameter.
The following example demonstrates how to add and remove attributes from indexed documents.
C#
stringindexFolder=@"c:\MyIndex";stringdocumentFolder=@"c:\MyDocuments";// Creating an indexIndexindex=newIndex(indexFolder);// Indexing documents in a document folderindex.Add(documentFolder);// Creating an attribute change container objectAttributeChangeBatchbatch=newAttributeChangeBatch();// Adding one attribute to all indexed documentsbatch.AddToAll("public");// Removing one attribute from one indexed documentbatch.Remove(@"c:\MyDocuments\KeyPoints.doc","public");// Adding two attributes to one indexed documentbatch.Add(@"c:\MyDocuments\KeyPoints.doc","main","key");// Applying attribute changes in the indexindex.ChangeAttributes(batch);// Searching in the indexSearchOptionsoptions=newSearchOptions();// Creating a document filter by attributeoptions.SearchDocumentFilter=SearchDocumentFilter.CreateAttribute("main");SearchResultresult=index.Search("Einstein",options);
Attributes can be associated with documents during indexing using the FileIndexing event. The following example demonstrates this.
C#
stringindexFolder=@"c:\MyIndex";stringdocumentFolder=@"c:\MyDocuments";// Creating an indexIndexindex=newIndex(indexFolder);// Subscribing to the FileIndexing event for adding attributesindex.Events.FileIndexing+=(sender,args)=>{if(args.DocumentFullPath.EndsWith("KeyPoints.doc")){// Adding two attributesargs.Attributes=newstring[]{"main","key"};}};// Indexing documents in a document folderindex.Add(documentFolder);// Searching in the indexSearchOptionsoptions=newSearchOptions();// Creating a document filter by attributeoptions.SearchDocumentFilter=SearchDocumentFilter.CreateAttribute("main");SearchResultresult=index.Search("Einstein",options);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: