| 1 |
29 |
dpavlin |
#!/usr/bin/perl -w |
| 2 |
|
|
|
| 3 |
|
|
use strict; |
| 4 |
52 |
dpavlin |
use Search::Estraier 0.06; |
| 5 |
83 |
dpavlin |
use parse_trivia; |
| 6 |
29 |
dpavlin |
|
| 7 |
|
|
# score for words in title |
| 8 |
|
|
my $title_rank = 3; |
| 9 |
|
|
|
| 10 |
|
|
open(my $t, "gzip -cd trivia.list.gz |") || die "can't open trivia.list.gz: $!"; |
| 11 |
|
|
|
| 12 |
41 |
dpavlin |
# open node |
| 13 |
50 |
dpavlin |
my $node = Search::Estraier::Node->new( |
| 14 |
|
|
url => 'http://localhost:1978/node/trivia', |
| 15 |
|
|
user => 'admin', |
| 16 |
|
|
passwd => 'admin', |
| 17 |
52 |
dpavlin |
create => 1, |
| 18 |
50 |
dpavlin |
); |
| 19 |
29 |
dpavlin |
|
| 20 |
83 |
dpavlin |
my $nr = 1; |
| 21 |
86 |
dpavlin |
my $max = 0; # no limit |
| 22 |
29 |
dpavlin |
|
| 23 |
83 |
dpavlin |
parse_trivia($t, sub { |
| 24 |
29 |
dpavlin |
|
| 25 |
83 |
dpavlin |
my $a = {@_}; |
| 26 |
29 |
dpavlin |
|
| 27 |
|
|
# create a document object |
| 28 |
50 |
dpavlin |
my $doc = Search::Estraier::Document->new; |
| 29 |
29 |
dpavlin |
|
| 30 |
|
|
# add attributes to the document object |
| 31 |
83 |
dpavlin |
$doc->add_attr('@uri', "file://localhost/trivia/$nr"); |
| 32 |
30 |
dpavlin |
|
| 33 |
83 |
dpavlin |
$doc->add_attr('@title', $a->{title}); |
| 34 |
30 |
dpavlin |
$doc->add_hidden_text( |
| 35 |
83 |
dpavlin |
(($a->{title} . ' ') x $title_rank) |
| 36 |
30 |
dpavlin |
); |
| 37 |
|
|
|
| 38 |
83 |
dpavlin |
$doc->add_attr('@size', length($a->{trivia})); |
| 39 |
29 |
dpavlin |
|
| 40 |
83 |
dpavlin |
$doc->add_attr('year', $a->{year}) if ($a->{year}); |
| 41 |
|
|
foreach my $q ( $a->{qv} ) { |
| 42 |
86 |
dpavlin |
$q = join(' ', @$q) if (ref($q) eq 'ARRAY'); |
| 43 |
|
|
next unless ($q); |
| 44 |
29 |
dpavlin |
$doc->add_attr('quote', $q); |
| 45 |
|
|
$doc->add_hidden_text($q); |
| 46 |
|
|
} |
| 47 |
|
|
|
| 48 |
|
|
# add the body text to the document object |
| 49 |
83 |
dpavlin |
$doc->add_text($a->{trivia}); |
| 50 |
29 |
dpavlin |
|
| 51 |
|
|
# register the document object to the database |
| 52 |
41 |
dpavlin |
$node->put_doc($doc); |
| 53 |
29 |
dpavlin |
|
| 54 |
86 |
dpavlin |
$nr++; |
| 55 |
|
|
last if ($max && $nr > $max); |
| 56 |
|
|
|
| 57 |
83 |
dpavlin |
}); |