1. A method for discovering a keyword query corresponding to an input collection of documents taken from a candidate pool, the method comprising: (a) initializing a working set to be an input set; (b) processing the working set until no documents remain in the working set, wherein said processing comprises: selecting a document from the working set and extracting a list of snippets in the selected document; for each snippet, executing a set of proximity queries based on selected terms in that snippet, and finding all possible proximity queries that return less than N query results from the candidate pool; selecting a query from said proximity queries, based on: a first criterion for the selected query returning the greatest number of working set documents, and a second criterion for the selected query returning the smallest number of documents not in the working set; and removing, from the working set, documents returned by the selected query; and (c) returning, as the discovered query, the disjunction of selected queries.