1. A method comprising: a server analyzing portions of data, including a particular portion of data, that are stored in an unstructured database column in a database to determine whether or not the portions of data include marked up text, wherein, prior to analyzing the portions of data, the portions of data, as stored, were not defined as marked up text; without changing the particular portion of data that is stored in the unstructured database column, the server determining that the particular portion contains a marked up text node as a descendant of an ancestor node, and the server storing a location of the marked up text node and an indication that the marked up text node is a descendant of the ancestor node; the server receiving an expression that specifies a value and a hierarchical path; the server evaluating the expression against the unstructured database column at least in part by: the server accessing the marked up text node from the location without scanning the particular portion of data; the server determining that the marked up text node contains the specified value; and the server determining that the marked up text node is under the hierarchical path based at least in part on the indication; wherein the method is performed, by the server, on one or more computing devices.