This page contains the boolean search definition, a description of all boolean operators used for boolean search, and boolean query examples.
Boolean search terms
Boolean search is a type of search that allows you to combine queries with boolean operators AND, OR, NOT to create a boolean query and further obtain more relevant results. For example, a boolean query might be “Albert AND Einstein”. This will limit the search results to only documents that contain both words.
Operator AND
The AND operator allows you to find only those documents that are found for each nested search query separately. The following example demonstrates the use of the AND operator in text and object form queries. The queries search for documents in the text of which there are both words “theory” and “relativity”.
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 text query
SearchResultresult1=index.search("theory AND relativity");// Search with object query
SearchQuerywordQuery1=SearchQuery.createWordQuery("theory");SearchQuerywordQuery2=SearchQuery.createWordQuery("relativity");SearchQueryandQuery=SearchQuery.createAndQuery(wordQuery1,wordQuery2);SearchResultresult2=index.search(andQuery);
Operator OR
The OR operator allows you to find all the documents that are found for at least one nested search query. The example demonstrates the use of the OR operator in text and object form queries. The queries search for documents in the text of which there is at least one of the words “Einstein” and “relativity”.
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 text query
SearchResultresult1=index.search("Einstein OR relativity");// Search with object query
SearchQuerywordQuery1=SearchQuery.createWordQuery("Einstein");SearchQuerywordQuery2=SearchQuery.createWordQuery("relativity");SearchQueryorQuery=SearchQuery.createOrQuery(wordQuery1,wordQuery2);SearchResultresult2=index.search(orQuery);
Operator NOT
The NOT operator allows you to invert the result of a nested search query and find all documents in which for the nested search query are found no occurrences. The example demonstrates the use of the NOT operator in text and object form queries. The queries search for documents in the text of which the word “relativity” is presented but the word “Einstein” is not.
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 text query
SearchResultresult1=index.search("relativity AND NOT Einstein");// Search with object query
SearchQuerywordQuery1=SearchQuery.createWordQuery("relativity");SearchQuerywordQuery2=SearchQuery.createWordQuery("Einstein");SearchQuerynotQuery=SearchQuery.createNotQuery(wordQuery2);SearchQueryandQuery=SearchQuery.createAndQuery(wordQuery1,notQuery);SearchResultresult2=index.search(andQuery);
Complex queries
Boolean search operators can be combined using parentheses. The example below shows how to use parentheses to construct complex boolean search queries. In the example the query is presented in text and object form and searches for documents containing the words “theory” and “relativity” and not containing the words “Einstein” and “Albert”.
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 text query
SearchResultresult1=index.search("(theory AND relativity) AND NOT (Einstein OR Albert)");// Search with object query
SearchQuerytheoryWordQuery=SearchQuery.createWordQuery("theory");SearchQueryrelativityWordQuery=SearchQuery.createWordQuery("relativity");SearchQueryandQuery=SearchQuery.createAndQuery(theoryWordQuery,relativityWordQuery);SearchQueryeinsteinWordQuery=SearchQuery.createWordQuery("Einstein");SearchQueryalbertWordQuery=SearchQuery.createWordQuery("Albert");SearchQueryorQuery=SearchQuery.createOrQuery(einsteinWordQuery,albertWordQuery);SearchQuerynotQuery=SearchQuery.createNotQuery(orQuery);SearchQueryrootQuery=SearchQuery.createAndQuery(andQuery,notQuery);SearchResultresult2=index.search(rootQuery);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: