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