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.
C#
stringindexFolder=@"c:\MyIndex\";stringdocumentsFolder=@"c:\MyDocuments\";// Creating an index in the specified folderIndexindex=newIndex(indexFolder);// Indexing documents from the specified folderindex.Add(documentsFolder);// Search in the indexSearchResultresult1=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.
C#
stringindexFolder=@"c:\MyIndex\";stringdocumentsFolder=@"c:\MyDocuments\";// Creating an index in the specified folderIndexindex=newIndex(indexFolder);// Indexing documents from the specified folderindex.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: