1. A method comprising: generating an index mapping data objects to terms associated with the data objects; generating a graph describing relationships between each of the data objects; receiving a search request comprising a plurality of search terms; based on the index, for each particular term in the plurality of search terms, identifying a candidate set of data objects that are mapped to the particular term; calculating priority scores for the data objects in the candidate sets based at least in part on one or more of: a link analysis of the graph; or metadata describing structural constraints upon the data objects; based on the graph, identifying one or more search result subgraphs, each comprising at least one data object from each of the candidate sets; wherein identifying the one or more search result subgraphs comprises looking for subgraphs in an order that is based on the priority scores; providing information indicating the one or more search result subgraphs in response to the search request; wherein the method is performed by one or more computing devices.