Hi list,
I am a newbie here
I have written an indexer to index all my mails. I am able to search on
to & from fields but not search on the actual body
can someone help me where I am going wrong
I have the script below
---------------------------------------------------------------------------------------------------------------
use KinoSearch::InvIndexer;
use KinoSearch::Analysis::PolyAnalyzer;
use KinoSearch::Searcher;
use strict;
#
# Start on a clean slate
#
system("rm -rf /tmp/invindex/*");
my $analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language =>
'en' );
@gl::headers = qw(from to cc subject body date reply-to message-id
in-reply-to filename);
my $invindexer = KinoSearch::InvIndexer->new(
invindex => '/tmp/invindex',
create => 1,
analyzer => $analyzer,
);
foreach (@gl::headers) {
$invindexer->spec_field( name => $_ ,indexed =>1);
}
my $doc = $invindexer->new_doc;
my %mail = (
'date' => 'Mon, 07 Jan 2008 14:04:35 +0530',
'to' => 'myteam@example.com',
'subject' => 'subject test here ',
'body' => 'This is a very short body here',
'cc' => 'ram@example.com',
'from' => 'sagar@example.com',
'message-id' => '<1199694875.14998.392.camel@sagar.example.com>',
'filename'=>'/abc/def'
);
foreach (keys %mail) {
next unless($mail{$_});
$doc->set_value( $_ => $mail{$_} );
}
$invindexer->add_doc($doc);
$invindexer->finish;
$analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language =>
'en' );
my $searcher = KinoSearch::Searcher->new(
invindex => '/tmp/invindex',
analyzer => $analyzer,
);
#
# Search on From ... works fine
#
my $term = KinoSearch::Index::Term->new("from","sagar");
my $term_query = KinoSearch::Search::TermQuery->new(term => $term);
my $hits = $searcher->search( query => $term_query );
while ( my $hit = $hits->fetch_hit_hashref ){
print "Found HIT in from" . $hit->{filename}."\n";
}
#
# Search on body ... no results
#
my $term = KinoSearch::Index::Term->new("body","short body");
my $term_query = KinoSearch::Search::TermQuery->new(term => $term);
my $hits = $searcher->search( query => $term_query );
while ( my $hit = $hits->fetch_hit_hashref ){
print "Found HIT in body" . $hit->{filename}."\n";
}
------------------------------------------------------------------------------------------------------------------------
*
_______________________________________________
KinoSearch mailing list
KinoSearch@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch
I am a newbie here
I have written an indexer to index all my mails. I am able to search on
to & from fields but not search on the actual body
can someone help me where I am going wrong
I have the script below
---------------------------------------------------------------------------------------------------------------
use KinoSearch::InvIndexer;
use KinoSearch::Analysis::PolyAnalyzer;
use KinoSearch::Searcher;
use strict;
#
# Start on a clean slate
#
system("rm -rf /tmp/invindex/*");
my $analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language =>
'en' );
@gl::headers = qw(from to cc subject body date reply-to message-id
in-reply-to filename);
my $invindexer = KinoSearch::InvIndexer->new(
invindex => '/tmp/invindex',
create => 1,
analyzer => $analyzer,
);
foreach (@gl::headers) {
$invindexer->spec_field( name => $_ ,indexed =>1);
}
my $doc = $invindexer->new_doc;
my %mail = (
'date' => 'Mon, 07 Jan 2008 14:04:35 +0530',
'to' => 'myteam@example.com',
'subject' => 'subject test here ',
'body' => 'This is a very short body here',
'cc' => 'ram@example.com',
'from' => 'sagar@example.com',
'message-id' => '<1199694875.14998.392.camel@sagar.example.com>',
'filename'=>'/abc/def'
);
foreach (keys %mail) {
next unless($mail{$_});
$doc->set_value( $_ => $mail{$_} );
}
$invindexer->add_doc($doc);
$invindexer->finish;
$analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language =>
'en' );
my $searcher = KinoSearch::Searcher->new(
invindex => '/tmp/invindex',
analyzer => $analyzer,
);
#
# Search on From ... works fine
#
my $term = KinoSearch::Index::Term->new("from","sagar");
my $term_query = KinoSearch::Search::TermQuery->new(term => $term);
my $hits = $searcher->search( query => $term_query );
while ( my $hit = $hits->fetch_hit_hashref ){
print "Found HIT in from" . $hit->{filename}."\n";
}
#
# Search on body ... no results
#
my $term = KinoSearch::Index::Term->new("body","short body");
my $term_query = KinoSearch::Search::TermQuery->new(term => $term);
my $hits = $searcher->search( query => $term_query );
while ( my $hit = $hits->fetch_hit_hashref ){
print "Found HIT in body" . $hit->{filename}."\n";
}
------------------------------------------------------------------------------------------------------------------------
*
_______________________________________________
KinoSearch mailing list
KinoSearch@rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch