1. A method of searching a hierarchical database and an inverted index, comprising: receiving a single search query that has syntax identifying an unstructured search string within a structured search query to automatically cause a search of the inverted index and use of the result to automatically search the hierarchical database; extracting the unstructured search string from the single search query; searching the inverted index according to the unstructured search string, wherein the inverted index includes virtual documents created from data stored in the hierarchical database, wherein each virtual document includes a unique identifier from the hierarchical database used to designate the data in the hierarchical database from which that virtual document was created, wherein a result of the inverted index search includes the unique identifiers of the virtual documents that meet the search; and generating, for each of the unique identifiers in the result, a separate search query from the single search query by replacing the unstructured search string in the structured search query with that unique identifier, searching the hierarchical database according to the separate search query; wherein the hierarchical database includes one or more sub-trees branching from a tree root node, wherein each sub-tree includes one or more nodes starting at a sub-tree root node, and wherein each node has a unique identifier, and wherein creating the virtual documents includes selectively generating the virtual documents from the one or more sub-trees, wherein each of the virtual documents corresponds to one of the one or more sub-trees and includes all nodes of that sub-tree; and wherein the syntax for the single search query includes a SELECT clause and a FROM clause, wherein the SELECT clause includes syntax to identify a path in the hierarchical database starting at the tree root node, and wherein the FROM clause includes the unstructured search string.