Using KinoSearch from subversion, this minimal test case causes a
segmentation fault.
#!/usr/bin/perl
use strict; use warnings;
package Schema::NoAnalyze;
use base qw( KinoSearch::Schema::FieldSpec );
sub analyzed { 0 }
package Schema;
use base qw( KinoSearch::Schema );
use KinoSearch::Analysis::PolyAnalyzer;
our %fields = ( noanalyze => 'Schema::NoAnalyze' );
sub analyzer { KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' ) }
package main;
use KinoSearch::InvIndexer;
use KinoSearch::Searcher;
my $index_dir = "test_index";
my $index = KinoSearch::InvIndexer->new(
invindex => Schema->clobber($index_dir)
);
$index->add_doc({ noanalyze => 'value' });
$index->finish();
my $query = KinoSearch::Search::BooleanQuery->new;
my $term = KinoSearch::Search::TermQuery->new(
term => KinoSearch::Index::Term->new( noanalyze => 'value' ),
);
$query->add_clause( query => $term, occur => 'SHOULD' );
my $searcher = KinoSearch::Searcher->new(
invindex => Schema->open($index_dir)
);
$searcher->search( query => $query );
segmentation fault.
#!/usr/bin/perl
use strict; use warnings;
package Schema::NoAnalyze;
use base qw( KinoSearch::Schema::FieldSpec );
sub analyzed { 0 }
package Schema;
use base qw( KinoSearch::Schema );
use KinoSearch::Analysis::PolyAnalyzer;
our %fields = ( noanalyze => 'Schema::NoAnalyze' );
sub analyzer { KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' ) }
package main;
use KinoSearch::InvIndexer;
use KinoSearch::Searcher;
my $index_dir = "test_index";
my $index = KinoSearch::InvIndexer->new(
invindex => Schema->clobber($index_dir)
);
$index->add_doc({ noanalyze => 'value' });
$index->finish();
my $query = KinoSearch::Search::BooleanQuery->new;
my $term = KinoSearch::Search::TermQuery->new(
term => KinoSearch::Index::Term->new( noanalyze => 'value' ),
);
$query->add_clause( query => $term, occur => 'SHOULD' );
my $searcher = KinoSearch::Searcher->new(
invindex => Schema->open($index_dir)
);
$searcher->search( query => $query );