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