Revision 86 (by dpavlin, 2007/04/18 15:55:47) support for multiple quotes
#!/usr/bin/perl -w

use strict;
use Search::Estraier 0.06;
use parse_trivia;

# score for words in title
my $title_rank = 3;

open(my $t, "gzip -cd trivia.list.gz |") || die "can't open trivia.list.gz: $!";

# open node
my $node = Search::Estraier::Node->new(
	url => 'http://localhost:1978/node/trivia',
	user => 'admin',
	passwd => 'admin',
	create => 1,
);

my $nr = 1;
my $max = 0;	# no limit

parse_trivia($t, sub {

		my $a = {@_};

		# create a document object 
		my $doc = Search::Estraier::Document->new;

		# add attributes to the document object 
		$doc->add_attr('@uri', "file://localhost/trivia/$nr");

		$doc->add_attr('@title', $a->{title});
		$doc->add_hidden_text(
			(($a->{title} . ' ') x $title_rank)
		);

		$doc->add_attr('@size', length($a->{trivia}));

		$doc->add_attr('year', $a->{year}) if ($a->{year});
		foreach my $q ( $a->{qv} ) {
			$q = join(' ', @$q) if (ref($q) eq 'ARRAY');
			next unless ($q);
			$doc->add_attr('quote', $q);
			$doc->add_hidden_text($q);
		}

		# add the body text to the document object 
		$doc->add_text($a->{trivia});

		# register the document object to the database
		$node->put_doc($doc);

		$nr++;
		last if ($max && $nr > $max);

});