[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