This page contains a description of the document filters used during the search.
Setting a filter
To specify which of the documents found should be returned as a result of the search, the setSearchDocumentFilter method of the SearchOptions class is used. If the document found does not match a filter passed to this method as an argument, the document will not be returned. The default value is null, which means that all documents found will be returned. The following example shows how to set a document filter for searching.
StringindexFolder="c:\\MyIndex\\";StringdocumentsFolder="c:\\MyDocuments\\";// Creating an index in the specified folder
Indexindex=newIndex(indexFolder);// Indexing documents from the specified folder
index.add(documentsFolder);// Creating a search options object
SearchOptionsoptions=newSearchOptions();options.setSearchDocumentFilter(SearchDocumentFilter.createFileExtension(".txt"));// Setting a document filter
// Search in the index
// Only text documents will be returned as the result of the search
SearchResultresult=index.search("relativity",options);
File path filters
The first supported type of search document filters allows you to set a regular expression for getting those documents whose full paths match the specified pattern. This type of filters uses the java.util.regex.Pattern class to compare with a pattern.
// The filter returns only files that contain the word 'Einstein' in their paths, not case sensitive
ISearchDocumentFilterfilter=SearchDocumentFilter.createFilePathRegularExpression("Einstein",Pattern.CASE_INSENSITIVE);
File extension filter
The next supported type of search document filters allows you to specify a list of valid file extensions for indexing.
// This filter returns only FB2 and EPUB documents
ISearchDocumentFilterfilter=SearchDocumentFilter.createFileExtension(".fb2",".epub");
Attribute filter
The next supported type of search document filters allows you to search only those documents with which the specified text attribute is associated. You can learn more about attributes on the Document attributes page.
// This filter returns only documents that have attribute "main"
ISearchDocumentFilterfilter=SearchDocumentFilter.createAttribute("main");
Combining filters
Search document filters can be combined using composite filters AND, OR, NOT. The following example shows how to combine search document filters.
// Creating an AND composite filter that returns all FB2 and EPUB documents that have the word 'Einstein' in their full paths
ISearchDocumentFilterfilter1=SearchDocumentFilter.createFilePathRegularExpression("Einstein",Pattern.CASE_INSENSITIVE);ISearchDocumentFilterfilter2=SearchDocumentFilter.createFileExtension(".fb2",".epub");ISearchDocumentFilterandFilter=SearchDocumentFilter.createAnd(filter1,filter2);// Creating an OR composite filter that returns all DOC, DOCX, PDF and all documents that have the word Einstein in their full paths
ISearchDocumentFilterfilter3=SearchDocumentFilter.createFilePathRegularExpression("Einstein",Pattern.CASE_INSENSITIVE);ISearchDocumentFilterfilter4=SearchDocumentFilter.createFileExtension(".doc",".docx",".pdf");ISearchDocumentFilterorFilter=SearchDocumentFilter.createOr(filter3,filter4);// Creating a filter that returns all found documents except of TXT documents
ISearchDocumentFilterfilter5=SearchDocumentFilter.createFileExtension(".txt");ISearchDocumentFilternotFilter=SearchDocumentFilter.createNot(filter5);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: