Sometimes when indexing, it is necessary to associate each document with certain additional metadata, for example, a set of tags, a number in the library catalog, the subject of a document, etc. To accomplish this task, additional fields can be added to each indexed document in addition to those already in the document itself.
Additional fields are associated with the document through the arguments of the FileIndexing event that occurs before indexing each added document. When adding each field, its name and contents are specified. The name of the added field can match the names of other added fields or fields of the document itself. During the search inside the fields with the same name, coincidences with the text of all fields with the specified name will be taken into account.
The example below demonstrates the associating of additional fields with documents during indexing.
// Defining somewhere a dictionary containing subjects of documents
finalHashMap<String,String>subjects=newHashMap();subjects.put("C:\\MyDocuments\\BhagavadGitaAsItIs.pdf".toLowerCase(),"Spiritual");// ...
StringindexFolder="c:\\MyIndex\\";StringdocumentsFolder="c:\\MyDocuments\\";// Creating an index
Indexindex=newIndex(indexFolder);// Subscribing to the event
index.getEvents().FileIndexing.add(newEventHandler<FileIndexingEventArgs>(){publicvoidinvoke(Objectsender,FileIndexingEventArgsargs){Stringsubject=subjects.get(args.getDocumentFullPath().toLowerCase());// Getting a subject for the current document
if(subject!=null){args.setAdditionalFields(newDocumentField[]{// Setting additional fields for the current document
newDocumentField("Subject",subject)});}}});// Indexing documents from the specified folder
index.add(documentsFolder);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: