After decades of effort working on database performance, the quality and the usability of database systems have received more attention in recent years. In particular, answering the why-not questions after a search is made has become more important. In this paper, the problem of answering why-not questions on top-k queries and refining the user query is solved. Generally many users love to pose those kinds of queries when they are making multi-criteria decisions. However, they would also want to know why their expected answers do not show up in the query results.