4 |
use strict; |
use strict; |
5 |
|
|
6 |
use Carp; |
use Carp; |
7 |
use jsFind; |
use jsFind 0.04; |
8 |
use Log::Log4perl qw(get_logger :levels); |
use Log::Log4perl qw(get_logger :levels); |
9 |
|
|
10 |
=head1 NAME |
=head1 NAME |
26 |
my $index = new WebPAC::jsFind( |
my $index = new WebPAC::jsFind( |
27 |
index_path => '/path/to/jsFind/index', |
index_path => '/path/to/jsFind/index', |
28 |
keys => 10, |
keys => 10, |
29 |
|
log => 'log4perl.conf', |
30 |
); |
); |
31 |
|
|
32 |
C<index> is path to location where jsFind index should be created. |
C<index> is path to location where jsFind index should be created. |
34 |
C<keys> is optional parametar which specify number of keys in each node |
C<keys> is optional parametar which specify number of keys in each node |
35 |
(which has to be even number). Default is 10. |
(which has to be even number). Default is 10. |
36 |
|
|
37 |
|
C<log> is optional parametar which specify filename of L<Log::Log4Perl> |
38 |
|
config file. Default is C<log.conf>. |
39 |
|
|
40 |
=cut |
=cut |
41 |
|
|
42 |
sub new { |
sub new { |
104 |
} |
} |
105 |
return unless (defined($args->{'words'})); |
return unless (defined($args->{'words'})); |
106 |
|
|
107 |
my $words = $args->{'words'}; |
my $words = lc($args->{'words'}); |
108 |
|
|
109 |
# chop leading and trailing spaces |
# chop leading and trailing spaces |
110 |
$words =~ s/^\s+//; |
$words =~ s/^\s+//; |
111 |
$words =~ s/\s+$//; |
$words =~ s/\s+$//; |
112 |
|
|
113 |
|
my @words = split(/\s+/,$words); |
114 |
|
|
115 |
my %usage; |
my %usage; |
116 |
foreach (split(/\s+/,$words)) { |
foreach (@words) { |
117 |
$usage{$_}++; |
$usage{$_}++; |
118 |
} |
} |
119 |
|
|
123 |
" path: ",$args->{'path'} |
" path: ",$args->{'path'} |
124 |
); |
); |
125 |
|
|
126 |
foreach my $word (keys %usage) { |
foreach my $word (@words) { |
127 |
|
|
128 |
$self->tree($args->{'index_name'})->B_search( |
$self->tree($args->{'index_name'})->B_search( |
129 |
Key => $word, |
Key => $word, |
147 |
This method will create directories if needed and store tree xml files |
This method will create directories if needed and store tree xml files |
148 |
for all indexes. |
for all indexes. |
149 |
|
|
150 |
|
Turning debugging for this function by inserting |
151 |
|
|
152 |
|
log4perl.logger.WebPAC.jsFind.close=DEBUG |
153 |
|
|
154 |
|
into C<log.conf> will also result in creation of GraphViz C<.dot> files |
155 |
|
for each index in current directory. |
156 |
|
|
157 |
=cut |
=cut |
158 |
|
|
166 |
|
|
167 |
$log->debug("saving index '$index_name' xml files to '$path'"); |
$log->debug("saving index '$index_name' xml files to '$path'"); |
168 |
|
|
169 |
$self->tree($index_name)->to_jsfind($path); |
$self->tree($index_name)->to_jsfind($path,'ISO-8859-2','UTF-8'); |
170 |
|
|
171 |
|
if ($log->is_debug()) { |
172 |
|
my $dot_file = $index_name.".dot"; |
173 |
|
|
174 |
|
$log->debug("saving graphviz file for '$index_name' to '$dot_file'"); |
175 |
|
|
176 |
|
open(DOT, ">", $dot_file) || $log->logdie("can't open '$dot_file': $!"); |
177 |
|
print DOT $self->tree($index_name)->to_dot; |
178 |
|
close(DOT); |
179 |
|
} |
180 |
} |
} |
181 |
|
|
182 |
} |
} |