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@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch
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@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch