152 |
sub setup_site { |
sub setup_site { |
153 |
my $self = shift; |
my $self = shift; |
154 |
|
|
155 |
my $site = shift || $self->{defaultnode}; |
my $site = shift; |
156 |
|
if (! $site) { |
157 |
|
$site = $self->{defaultnode}; |
158 |
|
$self->{log}->warn("using default site $site"); |
159 |
|
} |
160 |
|
|
161 |
$self->{log}->fatal("setup_site can't find site or defaultnode") unless ($site); |
$self->{log}->fatal("setup_site can't find site or defaultnode") unless ($site); |
162 |
|
|
163 |
my $url = $self->{masterurl} . '/node/' . $site; |
my $url = $self->{masterurl} . '/node/' . $site; |
164 |
$self->{est_node}->set_url( $url ); |
$self->{est_node}->set_url( $url ); |
165 |
$self->{log}->debug("setup_site $site using $url"); |
$self->{log}->debug("setup_site '$site' using $url"); |
166 |
} |
} |
167 |
|
|
168 |
=head2 search |
=head2 search |
215 |
} |
} |
216 |
$args->{depth} ||= 0; |
$args->{depth} ||= 0; |
217 |
|
|
218 |
$log->debug("searching for maximum $args->{max} results using depth $args->{depth} phrase: ", $query || '[none]'); |
$log->debug("searching " . $self->{est_node}->{url} . " max: $args->{max} depth: $args->{depth} phrase: " . ($query || '[none]') ); |
219 |
|
|
220 |
# |
# |
221 |
# construct condition for Hyper Estraier |
# construct condition for Hyper Estraier |
254 |
$log->debug( sprintf("search took %.6fs and returned $hits hits.", $times->{est}) ); |
$log->debug( sprintf("search took %.6fs and returned $hits hits.", $times->{est}) ); |
255 |
|
|
256 |
$self->{hints} = $result->{hints}; |
$self->{hints} = $result->{hints}; |
257 |
$log->dumper($self->{hints}, 'original hints' ); |
#$log->dumper($self->{hints}, 'original hints' ); |
258 |
|
|
259 |
# |
# |
260 |
# fetch results |
# fetch results |
359 |
|
|
360 |
while (my ($key,$val) = each %{ $self->{hints} }) { |
while (my ($key,$val) = each %{ $self->{hints} }) { |
361 |
|
|
362 |
|
#$self->{log}->debug("current hint $key = $val"); |
363 |
|
|
364 |
if ($key =~ m/^(?:HITS*|TIME|DOCNUM|WORDNUM)$/) { |
if ($key =~ m/^(?:HITS*|TIME|DOCNUM|WORDNUM)$/) { |
365 |
$hints->{ lc($key) } = $val; |
$hints->{ lc($key) } = $val; |
366 |
} elsif ($key =~ m/^HINT#/) { |
} elsif ($key =~ m/^HINT#/) { |
370 |
my ($url,undef,undef,undef,undef,undef,$results) = split(/\t/,$val,7); |
my ($url,undef,undef,undef,undef,undef,$results) = split(/\t/,$val,7); |
371 |
if ($url =~ m#/node/(.+)$#) { |
if ($url =~ m#/node/(.+)$#) { |
372 |
$hints->{node}->{$1} = $results; |
$hints->{node}->{$1} = $results; |
373 |
|
} else { |
374 |
|
$self->{log}->debug("url $url doesn't have /node/ in it!"); |
375 |
} |
} |
376 |
|
} else { |
377 |
|
$self->{log}->debug("unknown hint $key = $val"); |
378 |
} |
} |
379 |
|
|
380 |
} |
} |
381 |
|
|
382 |
$self->{log}->dumper($hints, 'model hints' ); |
$self->{log}->dumper($hints, 'model hints' ); |
445 |
|
|
446 |
=cut |
=cut |
447 |
|
|
448 |
|
my $nodes_list; |
449 |
|
|
450 |
sub list_nodes { |
sub list_nodes { |
451 |
my $self = shift; |
my $self = shift; |
452 |
|
|
456 |
|
|
457 |
$self->setup_site( $site ); |
$self->setup_site( $site ); |
458 |
|
|
459 |
|
# cache? |
460 |
|
return @{ $nodes_list->{$site} } if ($nodes_list->{$site} && ref($nodes_list->{$site} eq 'ARRAY')); |
461 |
|
|
462 |
my @nodes; |
my @nodes; |
463 |
|
|
464 |
if ($self->{est_node}->doc_num > 0) { |
if ($self->{est_node}->doc_num > 0) { |
498 |
|
|
499 |
$self->{log}->dumper( \@nodes, 'nodes' ); |
$self->{log}->dumper( \@nodes, 'nodes' ); |
500 |
|
|
501 |
|
$nodes_list->{$site} = \@nodes; |
502 |
|
|
503 |
return @nodes; |
return @nodes; |
504 |
} |
} |
505 |
|
|