Bottom-up evaluation of logic programs has recently attracted much attention in the logic programming and the deductive database field due to a number of advantages such as logical completeness and freedom from non-logical features. However, query evaluation by the bottom-up strategy may be inefficient since it may generate many irrelevant facts to a given query. As an approach to overcoming this drawback, the filtering strategy restricts generation of irrelevant facts by filters based on the bottom-up data flow evaluation. This dissertation defines a generalized filtered bottom-up evaluation formally and formalizes the static filter computation algorithm to give a formal view to static filter and its computation. Based on the formalism, the static filter is extended to stratified programs, in which rules may have negative literals, but which allow no recursive negation. The static filter, however, has its limit since it is computed at compile time using only data-independent bindings. In order to overcome the drawback of the static filtering, a new filtered bottom-up evaluation is provided using a new abstract filter which is computed by abstract interpretation at compile time. The general definition of abstract filters is presented on a general abstract domain not confined on a particular abstract domain. As a specialization, an abstract filter is computed using a new two-phase abstract interpretation. The two-phase abstract interpretation consists of a bottom-up phase followed by a top-down one and provides an approximation of success patterns of clauses relevant to a given query. This framework is specialized by considering the depth k abstraction as abstraction function. For other applications, the two-phase analysis is also applied to improving several top-down evaluation models. From the theoretical point of view, the abstract filter is shown to be at least as powerful as the static filter under some assumptions, and is compared with other related works....