Searching over heterogeneous information sources is difficult in part because of the non-uniform query languages. Our approach is to allow users to compose Boolean queries in one rich front-end language. For each user query and target source, we transform the user query into a subsuming query that can be supported by the source but that may return extra documents. The results are then processed by a filter query to yield the correct final results. In this paper we introduce the architecture and associated mechanism for query translation. In particular, we discuss techniques for rewriting predicates in Boolean queries into native subsuming forms, which is a basis of translating complex queries. In addition, we also presents experimental results for evaluating the cost of post-filtering. We have implemented prototype versions of these mechanisms and demonstrated them on heterogeneous Boolean systems.