Wildcard search allows you to search for words with unknown letters or ranges of letters.
In text form of a search query, there are 2 forms of wildcard characters:
? for a single character;
?(n~m) for a group of characters, where n and m are numbers from 0 to 255, and n <= m.
Wildcard search is similar to regular expression search, but it works significantly faster when groups of wildcard characters are less and closer to the end of a search query.
It is important to know that wildcard search is flexible enough to use for prefix queries, since prefix query is a special case of a wildcard query.
Examples of wildcard search with queries in text form are presented below.
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);// Search in the index
SearchResultresult1=index.search("m?rry");// Search for 'merry', 'marry', etc.
SearchResultresult2=index.search("card?(1~6)");// Search for 'cardiff', 'cardinal', 'cardio', 'cards', etc.
To build a query for the wildcard search in object form, use the WordPattern class. This class contains methods for adding known parts of a word and wildcards to a template. An example of constructing a query in object form is presented below.
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);// Search with pattern "m?rry"
// Search for 'merry', 'marry', etc.
WordPatternpattern1=newWordPattern();pattern1.appendString("m");pattern1.appendOneCharacterWildcard();pattern1.appendString("rry");SearchQueryquery1=SearchQuery.createWordPatternQuery(pattern1);SearchResultresult1=index.search(query1);// Search with pattern "card?(1~6)"
// Search for 'cardiff', 'cardinal', 'cardio', 'cards', etc.
WordPatternpattern2=newWordPattern();pattern2.appendString("card");pattern2.appendWildcard(1,6);SearchQueryquery2=SearchQuery.createWordPatternQuery(pattern2);SearchResultresult2=index.search(query2);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: