
john at perryhome
Sep 5, 2007, 9:59 AM
Post #1 of 3
(757 views)
Permalink
|
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 http://www.rectangular.com/mailman/listinfo/kinosearch
|