13. A system, comprising: one or more processors; and a non-transitory storage medium storing computer instructions operable to cause the one or more processors to perform operations comprising: receiving, from a client, a search request, the search request comprising a search query; performing a first search using the search query and one or more search indices stored on a server, the one or more search indices comprising a collection index generated from structured data and a document index generated from unstructured data; receiving, as a result of the first search, a collection of record identifiers, each record identifier comprising a tuple of data including a file identifier identifying a document that is hit by the first search in the unstructured data and a row identifier identifying a record in the structured data, the record having a data field referencing the document; performing a second search using the file identifier and the document index, including retrieving a search hit context from the document, the search hit context comprising one or more words in the document surrounding a term in the search query; merging the record identified by the row identifier and the search hit context into a search result; and providing the search result to the client as a response to the search request.
13. A system, comprising: one or more processors; and a non-transitory storage medium storing computer instructions operable to cause the one or more processors to perform operations comprising: receiving, from a client, a search request, the search request comprising a search query; performing a first search using the search query and one or more search indices stored on a server, the one or more search indices comprising a collection index generated from structured data and a document index generated from unstructured data; receiving, as a result of the first search, a collection of record identifiers, each record identifier comprising a tuple of data including a file identifier identifying a document that is hit by the first search in the unstructured data and a row identifier identifying a record in the structured data, the record having a data field referencing the document; performing a second search using the file identifier and the document index, including retrieving a search hit context from the document, the search hit context comprising one or more words in the document surrounding a term in the search query; merging the record identified by the row identifier and the search hit context into a search result; and providing the search result to the client as a response to the search request. 15. The system of claim 13 , wherein the tuple of data comprises the row identifier, the document identifier, and a hit position representing a location, in the document, of a first appearance of a term satisfying the search query.