/[webpac2]/trunk/run.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/run.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 301 by dpavlin, Mon Dec 19 21:26:04 2005 UTC revision 430 by dpavlin, Mon Apr 17 15:09:54 2006 UTC
# Line 13  use WebPAC::Input 0.03; Line 13  use WebPAC::Input 0.03;
13  use WebPAC::Store 0.03;  use WebPAC::Store 0.03;
14  use WebPAC::Normalize::XML;  use WebPAC::Normalize::XML;
15  use WebPAC::Output::TT;  use WebPAC::Output::TT;
 use WebPAC::Output::Estraier 0.05;  
16  use YAML qw/LoadFile/;  use YAML qw/LoadFile/;
17  use Getopt::Long;  use Getopt::Long;
18  use File::Path;  use File::Path;
19    use Time::HiRes qw/time/;
20    
21  =head1 NAME  =head1 NAME
22    
# Line 40  limit loading to 100 records Line 40  limit loading to 100 records
40    
41  remove database and Hyper Estraier index before indexing  remove database and Hyper Estraier index before indexing
42    
43    =item --only=database_name
44    
45    reindex just single database (legacy name is --one)
46    
47  =item --config conf/config.yml  =item --config conf/config.yml
48    
49  path to YAML configuration file  path to YAML configuration file
# Line 54  my $limit; Line 58  my $limit;
58  my $clean = 0;  my $clean = 0;
59  my $config = 'conf/config.yml';  my $config = 'conf/config.yml';
60  my $debug = 0;  my $debug = 0;
61    my $only_db_name;
62    
63  GetOptions(  GetOptions(
64          "limit=i" => \$limit,          "limit=i" => \$limit,
65          "offset=i" => \$offset,          "offset=i" => \$offset,
66          "clean" => \$clean,          "clean" => \$clean,
67            "one=s" => \$only_db_name,
68            "only=s" => \$only_db_name,
69          "config" => \$config,          "config" => \$config,
70          "debug" => \$debug,          "debug" => \$debug,
71  );  );
# Line 68  $config = LoadFile($config); Line 75  $config = LoadFile($config);
75  print "config = ",Dumper($config) if ($debug);  print "config = ",Dumper($config) if ($debug);
76    
77  die "no databases in config file!\n" unless ($config->{databases});  die "no databases in config file!\n" unless ($config->{databases});
78    my $use_indexer = $config->{use_indexer} || 'hyperestraier';
79    
80  my $total_rows = 0;  my $total_rows = 0;
81    my $start_t = time();
82    
83  while (my ($database, $db_config) = each %{ $config->{databases} }) {  while (my ($database, $db_config) = each %{ $config->{databases} }) {
84    
85            next if ($only_db_name && $database !~ m/$only_db_name/i);
86    
87          my $log = _new WebPAC::Common()->_get_logger();          my $log = _new WebPAC::Common()->_get_logger();
88    
89          #          my $indexer;
         # open Hyper Estraier database  
         #  
90    
91          my $est_config = $config->{hyperestraier} || $log->logdie("can't find 'hyperestraier' part in confguration");          if ($use_indexer eq 'hyperestraier') {
         $est_config->{database} = $database;  
92    
93          my $est = new WebPAC::Output::Estraier(                  #
94                  %{ $est_config },                  # open Hyper Estraier database
95          );                  #
96    
97          if ($clean) {                  use WebPAC::Output::Estraier '0.10';
98                  $log->warn("creating new empty index $database");                  my $est_config = $config->{hyperestraier} || $log->logdie("can't find 'hyperestraier' part in confguration");
99                  $est->master( action => 'nodedel', name => $database );                  $est_config->{database} = $database;
100                  $est->master( action => 'nodeadd', name => $database, label => $database );                  $est_config->{clean} = $clean;
101                    $est_config->{label} = $db_config->{name};
102    
103                    $indexer = new WebPAC::Output::Estraier( %{ $est_config } );
104            } else {
105                    $log->logdie("unknown use_indexer: $use_indexer");
106          }          }
107    
108            $log->logide("can't continue without valid indexer") unless ($indexer);
109    
110          #          #
111          # now WebPAC::Store          # now WebPAC::Store
112          #          #
# Line 104  while (my ($database, $db_config) = each Line 119  while (my ($database, $db_config) = each
119                  $log->info("creating new database $database in $db_path");                  $log->info("creating new database $database in $db_path");
120                  rmtree( $db_path ) || $log->warn("can't remove $db_path: $!");                  rmtree( $db_path ) || $log->warn("can't remove $db_path: $!");
121          } else {          } else {
122                  $log->info("working on $database in $db_path");                  $log->debug("working on $database in $db_path");
123          }          }
124    
125          my $db = new WebPAC::Store(          my $db = new WebPAC::Store(
# Line 141  while (my ($database, $db_config) = each Line 156  while (my ($database, $db_config) = each
156    
157                  my $input_module = $config->{webpac}->{inputs}->{$type};                  my $input_module = $config->{webpac}->{inputs}->{$type};
158    
159                  $log->info("working on input $input->{path} [$input->{type}] using $input_module");                  $log->info("working on input '$input->{path}' [$input->{type}] using $input_module lookup '$input->{lookup}'");
160    
161                  my $input_db = new WebPAC::Input(                  my $input_db = new WebPAC::Input(
162                          module => $input_module,                          module => $input_module,
# Line 149  while (my ($database, $db_config) = each Line 164  while (my ($database, $db_config) = each
164                          limit => $limit || $input->{limit},                          limit => $limit || $input->{limit},
165                          offset => $offset,                          offset => $offset,
166                          lookup => $lookup,                          lookup => $lookup,
167                            recode => $input->{recode},
168                  );                  );
169                  $log->logdie("can't create input using $input_module") unless ($input);                  $log->logdie("can't create input using $input_module") unless ($input);
170    
# Line 193  while (my ($database, $db_config) = each Line 209  while (my ($database, $db_config) = each
209    
210                          my $ds = $n->data_structure($row);                          my $ds = $n->data_structure($row);
211    
212                          $est->add(                          $indexer->add(
213                                  id => $input->{name} . "/" . $mfn,                                  id => $input->{name} . "/" . $mfn,
214                                  ds => $ds,                                  ds => $ds,
215                                  type => $config->{hyperestraier}->{type},                                  type => $config->{$use_indexer}->{type},
216                          );                          );
217    
218                          $total_rows++;                          $total_rows++;
# Line 204  while (my ($database, $db_config) = each Line 220  while (my ($database, $db_config) = each
220    
221          };          };
222    
223          $log->info("$total_rows records indexed");          my $dt = time() - $start_t;
224            $log->info("$total_rows records indexed in " .
225                    sprintf("%.2f sec [%.2f rec/sec]",
226                            $dt, ($total_rows / $dt)
227                    )
228            );
229    
230          #          if ($use_indexer eq 'hyperestraier') {
231          # add Hyper Estraier links to other databases                  #
232          #                  # add Hyper Estraier links to other databases
233          if (ref($db_config->{links}) eq 'ARRAY') {                  #
234                  foreach my $link (@{ $db_config->{links} }) {                  if (ref($db_config->{links}) eq 'ARRAY') {
235                          $log->info("adding link $database -> $link->{to} [$link->{credit}]");                          foreach my $link (@{ $db_config->{links} }) {
236                          $est->add_link(                                  $log->info("adding link $database -> $link->{to} [$link->{credit}]");
237                                  from => $database,                                  $indexer->add_link(
238                                  to => $link->{to},                                          from => $database,
239                                  credit => $link->{credit},                                          to => $link->{to},
240                          );                                          credit => $link->{credit},
241                                    );
242                            }
243                  }                  }
244            } else {
245                    $log->warn("links not implemented for $use_indexer");
246          }          }
247    
248  }  }

Legend:
Removed from v.301  
changed lines
  Added in v.430

  ViewVC Help
Powered by ViewVC 1.1.26