1. A method for responding to a user query, the method being implemented on a machine having at least one processor, storage, and a communication platform, the method comprising: receiving a query submitted by a user; identifying a set of documents that are related to the query; determining ratings associated with individual documents of the set of documents, wherein each of the ratings is either provided by the user or is an inferred rating for the associated document with respect to the user; determining, for each of the ratings associated with a particular document from the set of documents, a weight based on whether the rating (i) is provided by the user or (ii) is an inferred rating, wherein a weight for an inferred rating is determined based on a number of documents for which the user provided ratings in a category to which the particular document belongs and consistency of the ratings; determining an additional category related to one other document associated with one other inferred rating of the ratings, wherein determining a weight for each of the ratings further comprises determining a weight for the one other inferred rating based on how many documents for which the user provided a rating that are related to the additional category such that the weight for the one other inferred rating is greater than the weight for the one inferred rating based on the number of documents for which the user provided a rating that are related to the additional category being greater than the number of documents for which the user provided a rating that are related to the category; computing for the particular document a weighted rating based on the weight associated with the rating; ranking the set of documents based on weighted ratings of the set of documents; and generating, based on the ranking, a search report that indicates (i) at least some documents of the set of documents and (ii) at least one of the ratings.