#!/usr/bin/perl # search.pl - search a kinosearch index # Eric Lease Morgan # 2007-07-06 - added source and publisher # 2007-07-05 - ported to ticer school # 2007-07-01 - first cut # define use constant INDEX => '../etc/index'; # require/include use KinoSearch::Searcher; use KinoSearch::Analysis::PolyAnalyzer; my $query = shift; if ( ! $query ) { # get the query print "Enter a query. "; chop ( $query = ) } # open an index $analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' ); $searcher = KinoSearch::Searcher->new( invindex => INDEX, analyzer => $analyzer ); # search $hits = $searcher->search( qq($query) ); # get the number of hits and report result $total_hits = $hits->total_hits; print "Your query ($query) found $total_hits record(s).\n\n"; # loop through each hit my $index = 0; while ( my $hit = $hits->fetch_hit_hashref ) { # extract what i need my $identifier = $hit->{ 'identifier' }; my $title = $hit->{ 'title' }; my $date = $hit->{ 'date' }; my $language = $hit->{ 'language' }; my $creator = $hit->{ 'creator' }; my $source = $hit->{ 'source' }; my $publisher = $hit->{ 'publisher' }; my $subject = ''; foreach ( split /\|/, $hit->{ 'subject' } ) { $subject .= $_ . '; ' } # display $index++; print " record: $index\n"; print " identifier: $identifier\n"; print " creator: $creator\n"; print " title: $title\n"; print " date: $date\n"; print " language: $language\n"; print " subject(s): $subject\n"; print " source: $source\n"; print " publisher: $publisher\n"; print "\n"; } # done exit;