[KinoSearch] _02: RangeFilter problems
Edward Betts
edwardbetts at gmail.com
Thu Mar 15 10:09:26 PDT 2007
I can't get the RangeFilter to work, any ideas, here is a sample:
#!/usr/bin/perl
use strict; use warnings;
use KinoSearch::InvIndexer;
use KinoSearch::Searcher;
use KinoSearch::Search::RangeFilter;
package ShotSchema::Title;
use base qw( KinoSearch::Schema::FieldSpec );
sub vectorized { 0 }
package ShotSchema::Date;
use base qw( KinoSearch::Schema::FieldSpec );
sub analyzed { 0 }
package ShotSchema;
use base qw( KinoSearch::Schema );
use KinoSearch::Analysis::PolyAnalyzer;
our %FIELDS = (
date => 'ShotSchema::Date',
title => 'ShotSchema::Title',
);
sub analyzer {
return KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' );
}
package main;
my $invindexer = KinoSearch::InvIndexer->new(
invindex => ShotSchema->clobber('index')
);
$invindexer->add_doc({ date => "2006-01-01", title => "ENGLAND"});
$invindexer->finish;
## done indexing
my $searcher = KinoSearch::Searcher->new(
invindex => ShotSchema->open('index'),
);
## search without filter
my $hits = $searcher->search( query => 'ENGLAND' );
while ( my $hit = $hits->fetch_hit_hashref ) {
print "$hit->{date}\n";
}
## search with filter
my $filter = KinoSearch::Search::RangeFilter->new(
field => 'date',
lower_term => '2005-01-01',
upper_term => '2007-01-01',
include_lower => 1,
include_upper => 1,
);
$hits = $searcher->search(
query => 'ENGLAND',
filter => $filter,
);
while ( my $hit = $hits->fetch_hit_hashref ) {
print "$hit->{date}\n";
}
More information about the kinosearch
mailing list