1. A method comprising: receiving a plurality of documents by a computing device, wherein each document comprises a plurality of objects; for each document, generating a graph representing the document by the computing device, wherein each graph comprises a node corresponding to each object of the represented document; generating a document index by merging the generated graphs by the computing device, wherein each node in the document index includes identifiers of one or more graphs that include the node, and wherein the document index comprises a graph; generating a matrix from the document index by the computing device; receiving a query by the computing device; generating a matrix from the received query by the computing device; generating one or more matrix operations from the received query by the computing device; identifying one or more documents of the plurality of documents that are responsive to the query using the matrix generated from the document index, the matrix generated from the received query, and the one or more matrix operations by the computing device; running the query on the identified one or more documents to generate a subset of the identified one or more documents by the computing device; and providing the subset of the one or more identified documents in response to the query by the computing device.