#!/usr/bin/perl # kinosearch.pl - search a KinoSearch index of dublin core content # Eric Lease Morgan # 2007-06-24 - first cut; based on crri # define use constant INDEX => '../etc/index'; # require use KinoSearch::Searcher; use KinoSearch::Analysis::PolyAnalyzer; use strict; # get the input my $query = shift; if ( ! $query ) { print "Usage: $0 \n"; exit; } # initialize kinosearch my $analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' ); my $searcher = KinoSearch::Searcher->new( invindex => INDEX, analyzer => $analyzer ); # search my $hits = $searcher->search( query => $query ); # display the number of hits my $total_hits = $hits->total_hits; print "Your query ($query) resulted in $total_hits record(s).\n\n"; # loop through each hit my $index = 0; while ( my $hit = $hits->fetch_hit_hashref ) { # increment $index++; # display print " record: $index of $total_hits\n"; &pretty_print( ' title: ', $hit->{ title }); &pretty_print( ' creator: ', $hit->{ creator }); &pretty_print( ' subject: ', $hit->{ subject }); &pretty_print( ' description: ', $hit->{ description }); &pretty_print( ' publisher: ', $hit->{ publisher }); &pretty_print( ' date: ', $hit->{ date }); &pretty_print( ' type: ', $hit->{ type }); &pretty_print( ' format: ', $hit->{ format }); &pretty_print( ' identifier: ', $hit->{ identifier }); &pretty_print( ' language: ', $hit->{ language }); &pretty_print( ' relation: ', $hit->{ relation }); &pretty_print( ' coverage: ', $hit->{ coverage }); &pretty_print( ' rights: ', $hit->{ rights }); &pretty_print( ' source: ', $hit->{ source }); print "\n"; } # done exit; sub pretty_print { foreach ( split /\|/, @_[1] ) { print @_[0], $_, "\n" } }