[KinoSearch] leaky filters

John Perry john at perryhome.com
Wed Sep 5 09:59:30 PDT 2007



Using the development version of KinoSearch (0.20) I'm trying to filter 
the query results by a range filter (date) and two optional query 
filters (agency and docType). The range filter works great. The query 
filters seem to have no effect at all. I'm probably missing something 
obvious here, but I just can't see what I'm doing wrong. Any help would 
be appreciated

-- JP

Here's the relevant code:

my $general_query = $query_parser->parse( $query_string );

my $agency_filter;
if ( $agency ) {
    my $agency_query = KinoSearch::Search::TermQuery->new(
        term => KinoSearch::Index::Term->new( 'source', $agency ),
    );
   
    $agency_filter = KinoSearch::Search::QueryFilter->new(
        query => $agency_query,
    );
}

my $docType_filter;
if ( $doctype ) {
    my $docType_query = KinoSearch::Search::TermQuery->new(
        term => KinoSearch::Index::Term->new( 'docType', 'audit' ),
    );
   
    $docType_filter = KinoSearch::Search::QueryFilter->new(
        query => $docType_query,
    );
}

my $from_date = $from || '2003-05-01';
my $to_date   = $to   || '2007-09-01';
my $date_filter = KinoSearch::Search::RangeFilter->new(
    field                => 'date',
    lower_term     => $from_date,
    upper_term     => $to_date,
    include_lower => 1,
    include_upper => 1,
);
 
my $filters = KinoSearch::Search::PolyFilter->new;
$filters->add( filter => $date_filter );
$filters->add( filter => $agency_filter,    logic => 'AND' ) if 
$agency_filter;
$filters->add( filter => $docType_filter, logic => 'AND' ) if 
$docType_filter;


my $hits = $searcher->search( query  => $general_query, filter => 
$filters, );


_______________________________________________
KinoSearch mailing list
KinoSearch at rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch




More information about the kinosearch mailing list